목록 Architecture/Infrastructure (29)
배경 이번 프로젝트의 경우에는 jdk8이 문제가 없던 상황에서 잘 쓰다가 jdk11이 필요한 상황이었다. 예를 들면 rabbitMQ나 sonarqube를 사용하는데 11 이상이 필요한 것을 확인했다. dev 서버, prod 서버, 프론트 서버, 딥러닝 학습 서버,,, 이번 프로젝트 안에서 기존에 젠킨스 설정을 잡아둔게 너무 많아 새로 젠킨스를 설치할 수는 없었고, 결국 버전을 바꾸기로 했다. 그 과정이 명확하게 설명이 된 블로그가 없길래 한번 정리해본다. default version : 8 도커를 이용해서 젠킨스 설치 시 기본으로 설치되는 jdk 버전은 8이다. 젠킨스 서버 내부에서 jdk 를 설치하고, 버전을 지정할 수 있는데 무료는 젠킨스9 까지이다. 그런데 젠킨스에서 설치 지원을 안한다는거지 젠킨스..
젠킨스 삽질 과정에서 배운 것들 Jenkins를 설정하면서 다음을 배웠다. 1. 리눅스 가상 메모리 설정 (스왑 파일 생성) aws 프리티어 인스턴스가 지나치게 느려 메모리 문제임을 확인하고 가상 메모리를 설정하였다. 코틀린 빌드 시간이 말도 안되게 느렸고, 가상 메모리로 해당 문제를 해결할 수 있었다. (결국 용량 문제로 Medium으로 갈아탔다.. ) 스왑 파일을 사용하여 Amazon EC2 인스턴스의 스왑 공간으로 메모리 할당 1. dd 명령을 사용하여 루트 파일 시스템에 스왑 파일을 생성합니다. 명령에서 bs는 블록 크기이고 count는 블록 수입니다. 스왑 파일의 크기는 dd 명령의 블록 크기 옵션에 블록 수 옵션을 곱 aws.amazon.com 2. 리눅스 포트포워딩 (iptables) 젠킨스..
Load Balancing과 세션 유지로드 밸런싱을 간단히 말하면, 트래픽을 한 서버에서 모두 처리하는 것이 아니라, 다수의 서버에 적절하게 분배해주는 것이다. 보통 여러 대의 WAS 전면에 Web Server를 두고, 요청을 WAS에 적절히 나누는 식으로 사용된다. 이렇게 로드 밸런싱을 이용하면 서버의 부담도 줄일 수 있으면서, 한 서버가 다운되더라도 서비스를 이어갈 수 있다는 장점이 있다. 문제는 세션이다. 세션은 서버에 데이터를 저장한다고 배웠는데, 여러 was에 요청을 분산하면 세션 지속에 문제가 없을까 궁금했다. 해결책먼저 세션 지속을 보장하는 Web Server를 사용할 수 있을 것 같다. 예를 들면 NginX plus는 Session Persistence를 지원하고 있음을 확인했다. Ses..
WAS에 전면에 Web Server를 두는 이유WAS에서도 정적 자원을 처리할 수 있음에도, 아래와 같이 web server를 was 전면에 두는 꼴의 서버 구조가 보편적인 이유가 궁금했다.왜 WAS와 독립된 Web server를 따로 두는 걸까. 그 이유를 정리해보았다. 정적 요청은 WAS까지 안가도 되잖아?WAS는 바쁘다. 요청을 처리해야하고, DB 서버가 분리되어 있다면 DB 서버와 통신도 해야할 것이다. 정적 자원 요청을 전면 web server에서 빠르게 처리해주면 WAS에 부담이 줄 것이다. 이때 서버에 따라 캐싱을 사용할 수 있을 것이다. (예를 들면 NginX는 정적 컨텐츠의 캐싱을 지원한다.) 요즘의 웹 페이지는 모두 동적이지, 정적인 컨텐츠가 있다면 얼마나 있을까를 고민하는..
1. S3- 모든 종류의 데이터를 파일 형태로 저장하는 객체 스토리지.- 사실상 무한대의 용량을 저렴한 비용으로 사용 가능함.- 하지만 그 자체로는 단순 파일 저장소. 데이터의 구조나 내용을 알지 못함.- 이곳에 데이터를 무작정 쌓는 것에서 '데이터 레이크'가 시작됨. 2. Parquet: '어떻게' 저장할 것인가? - CSV, JSON과 같은 데이터 저장 포맷의 한 종류. 빅데이터 분석을 위해 태어남.- 핵심 특징: 컬럼 기반(Columnar) 저장. - Row 기반 (CSV/JSON): [A1,B1,C1], [A2,B2,C2] 형태로 한 줄씩 저장. - Column 기반 (Parquet): [A1,A2], [B1,B2], [C1,C2] 형태로 컬럼별로 묶어서 저장.- 장점 : - 쿼리 성능 ..