DevOps

    Jenkins를 활용한 자동 배포 구축

    들어가며 프로젝트를 진행할 때 개발한 애플리케이션을 배포해본 경험이 있을 것이다. 배포를 진행할 때 서버에 접속하여 수동으로 할 수도 있지만 매번 이렇게 하기에는 너무 번거롭다. 그렇다면 이러한 수동 배포 방식 말고, 자동으로 배포가 진행되도록 할 수는 없을까? 예를 들어 Github에서 push, merge와 같은 이벤트가 발생했을 때 자동으로 배포가 이루어질 수 있다면 매우 편리할 것이다. 이번 포스트에서는 Jenkins를 활용하여, Github에 어떤 이벤트가 발생했을 때 자동으로 배포가 이루어지도록 하는 자동 배포 방법에 대해 소개하려고 한다. 이번 포스트에서는 서버 프레임워크로 스프링 부트를 사용한다. Jenkins 설치 Jenkins 설치는 도커를 이용하는 것이 가장 간편하다. 다음 명령어를 ..

    인덱스 컨디션 푸시다운(index_condition_pushdown)

    인덱스 컨디션 푸시다운 인덱스 컨디션 푸시다운이란 인덱스 조건(Codition)을 스토리지 엔진으로 전달해주는 기능이다. MySQL 5.6 버전부터 해당 기능이 도입되었는데, 어떠한 이점을 가져오는지 알아보도록 하자. 테이블 및 인덱스 생성 우선 인덱스 컨디션 푸시다운을 테스트하기 위해 employees 테이블을 생성해서 100건 정도의 데이터를 넣고, 아래와 같은 인덱스를 생성해주도록 한다. CREATE TABLE employees (emp_no bigint not null primary key, first_name varchar(255), last_name varchar(255), hire_date datetime); ALTER TABLE employees ADD INDEX temp_idx (last..

    어댑티브 해시 인덱스(Adaptive Hash Index)

    어댑티브 해시 인덱스 일반적으로 '인덱스'라고 하면 흔히 사용자가 생성한 B-Tree 인덱스를 떠올릴 것이다. 반면, 어댑티브 해시 인덱스는 사용자가 수동으로 생성하는 인덱스가 아니라 InnoDB 스토리지 엔진에서 사용자가 자주 요청하는 데이터에 대해 자동으로 생성하는 인덱스이다. 어댑티브 해시 인덱스는 innodb_adaptive_hash_index 시스템 변수를 이용해 기능을 활성화할 수 있다. 흔히 우리가 알고 있는 B-Tree 인덱스는 특정 값을 찾기 위해 루트 노드를 거쳐 브랜치 노드, 리프 노드까지 찾아가야 원하는 레코드를 읽을 수 있다. 따라서 이러한 B-Tree 인덱스는 자주 사용되는 데이터라도 매번 B-Tree를 타야한다는 아쉬운 부분이 있다. 어댑티브 해시 인덱스의 성능 향상 어댑티브 ..

    도커 스웜(Docker Swarm) 알아보기

    본 글은 시작하세요! 도커/쿠버네티스(용찬호 저, 위키북스)를 기반으로 정리한 글입니다. 이전 포스팅에서 도커와 도커 사용법에 대해서 알아보았는데, 지금까지 알아본 도커 사용법은 하나의 호스트를 기준으로 한다. 그런데 만약 하나의 호스트 머신에서 도커 엔진을 구동하다가 CPU나 메모리, 디스크 용량과 같은 자원이 부족해진다면 이를 어떻게 해결할까? 서버를 하나 더 구매해서 컨테이너를 분산하는 방법이 있을 것이다. 그러나 서버를 추가하면 이러한 서버들을 하나의 자원 풀로 만들어야 하는데, 이는 쉬운 작업이 아니다. 예를 들어 새로운 서버나 컨테이너가 추가됐을 때 이를 발견(Service Discovery)하는 작업부터 어떤 서버에 컨테이너를 할당할 것인가에 대한 스케줄러와 로드밸런서 문제, 클러스터 내의 ..