Nginx 무중단 배포
·
DevOps/CI-CD
.
Jenkins CI/CD 구축하기 2편 (with. Docker)
·
DevOps/CI-CD
1편에서 Jenkins를 구축하는 것까지 해보았으니, 2편에서는 본격적으로 Jenkins에서 'Item / Script / Plugin / Credential' 을 작성해보면서 CI/CD를 구축해보자. 1. Jenkins의 Item Jenkins에서 하나의 CI/CD 프로젝트를 구축하기 위해서는 Item을 생성해야 한다. Freestyle- GUI로 쉽게 작업을 설정할 수 있다.- 단일 빌드 작업에 많이 사용된다. Pipeline- 하나의 스크립트 파일(Jenkinsfile)을 통해 파이프라인을 코드로 정의할 수 있다. (버전 관리 가능)- 빌드, 테스트, 배포 등 여러 단계를 하나의 스크립트 파일로 쉽게 정의하여 작업에 대한 흐름을 파악하기 쉽다.- FreeStyle과 다르게 스크립트를 작성해야 하는..
Jenkins CI/CD 구축하기 1편 (with. Docker)
·
DevOps/CI-CD
인턴 활동 중 Jenkins CI/CD 파이프라인 구축 업무를 맡으면서, 얻은 인사이트를 기록으로 남기고자 포스트를 적게 되었습니다. 이전에 Github Actions을 활용하여 프로젝트의 CI/CD를 구축할 때, Jenkins 또한 고려사항에 있었지만 높은 학습 비용으로 인해 미룬 바가 있었습니다. 하지만 이번 테스크를 통해, 관심이 있던 Docker와 Jenkins를 깊게 학습할 수 있어 감사히 생각합니다.🙇🏻‍♂️ https://wch-0625.tistory.com/161 (Github Actions 활용기)  1. Jenkins란?우선 Jenkins는 코드의 변경 사항이 있을 때 자동으로 빌드하고 테스트하는 CI(지속적 통합), CI가 완료된 코드를 서버에 자동으로 배포하는 CD(지속적 배포)..
도커(Docker)란?
·
DevOps/Docker
1. 도커란?도커는 가상화의 한 종류인 '컨테이너' 기반의 오픈소스 프로젝트이다. 컨테이너는 그 자체로 독립적인 실행 환경이다.애플리케이션이 빠르고 안정적으로 실행할 수 있도록, 애플리케이션 파일과 실행에 필요한 모든 의존성을 하나의 패키지로 묶는다. 도커의 컨테이너 개념을 도입하여, 동일한 환경에서 실행되므로 '개발-테스트-프로덕션 환경' 간에도 일관성을 유지할 수 있다.   참고로 도커의 시작은 리눅스의 cgroups와 namespaces을 활용한 LXC 기반으로 시작했지만, 현재는 자체적인 컨테이너 기술을 개발하여 사용하고 있다.  2. 가상머신(Virtual Machine)과의 차이점은?1) 기존 가상화 방식도커는 컴퓨터 자원을 가상화 하는 방식 중 하나이다.그럼 도커 이전에는 어떻게 가상화를 했..
[MySQL] Partition 3. DATE 기반 월별 파티션 구현
·
DB
파티셔닝을 적용할 때, 가장 중요한 점이 필요한 파티션만 적절히 접근할 수 있어야 한다.이를 위해서 파티션 표현식을 잘 세워야 한다. 이번 포스트에서는 DATE / DATETIME 필드를 사용해서 월별로 파티셔닝을 진행할 때, 쿼리 실행 계획을 분석하여 파티션 프루닝이 정상적으로 잘 동작하는지 테스트하고 가장 적합한 파티션 표현식이 무엇인지 찾아보는 과정을 담았다.  1. PARTITION BY RANGE (year(GATH_DTM) * 100 + month(GATH_DTM))파티션 프루닝 테스트단건 조회는 파티션 프루닝이 잘 동작하나, 범위 조회는 파티션 프루닝이 전혀 동작하지 않으며 모든 파티션을 스캔하고 있다. 왜 안 될까?위 표현식을 통해서 파티션 생성은 잘 되는 것은 확인했지만, 전체 파티션을 ..
[MySQL] Partition 2. 적용하기 전 개념 정리
·
DB
1. 파티션을 사용하는 이유1) 하나의 테이블이 너무 커서 인덱스의 크기가 물리적인 메모리보다 훨씬 큰 경우 (=  큰 테이블을 작은 크기의 파티션으로 분리)- 테이블의 데이터가 MySQL의 물리 메모리보다 큰 것이 일반적이지만, 인덱스의 Working Set이 실질적인 물리 메모리보다 크면 쿼리 처리가 현저히 떨어지게 된다. 파티셔닝을 통해 여러 작은 파티션으로 나누면. 각 파티션에 대한 로컬 인덱스로 인덱스 크기를 줄일 수 있어 인덱스 탐색 속도가 빨라지게 된다. 2) 필요한 파티션만 접근하는 경우(read & write)- 전체 테이블을 스캔하지 않고 특정 파티션을 read / write 하는 것이 훨씬 빠르고 효율적이다.예를 들어 로그와 같은 이력 데이터들에 대한 주기적인 삭제 작업이 필요하거나 ..