Dev Ops
-
[CI/CD] Spring, Jenkins, Nginx, EC2, Docker로 무중단 배포 구현 (2) Jenkins-Gitlab 연동 및 CI 환경 구축Dev Ops/CI-CD 2023. 8. 6. 22:35
지난 번 포스팅 이후로 많은 시간이 지나버렸다... 까먹어서 기억을 되덤어 볼 겸 다시 작성! (싸피가 최근 프로젝트 하느라 조회수가 잘나오더라^_^) 지난 번엔 자동배포 환경에 필요한 툴들을 다운로드 하는 방법에 대해 작성했고, 이번 포스팅에서는 젠킨스로 CI 환경 구축하는 방법까지 작성하고자 한다. 참고로 지금 구축하고 있는 환경은 백엔드용 환경이다. 프론트엔드 배포는 별도로 다룰 예정. [지난 포스팅] 1편. EC2 서버 기본 설정 (도커, 젠킨스, Nginx, JDK, MySQL, Redis 설치) [ Service Architecture ] 이번 포스팅에서 구현할 서비스 구조도는 아래와 같다. 포트를 2개로 구분하여, 서버를 새로 빌드하고 배포하는 과정에서 생기는 서버다운타임 없이 서비스가 운영..
-
[CI/CD] Jenkins 스크립트에서 프로젝트 빌드시 Dockerfile 경로 설정하는 법Dev Ops/CI-CD 2023. 4. 17. 00:32
[상황] - Jenkins에서 item이 3개로 구분되어서 빌드 진행(Backend-spring/Backend-python/Frontend) - 스프링서버와 파이썬서버는 각각 무중단배포와 Auto-scaling을 위해 Docker로 빌드하여 Dockerhub에 올린 후 이미지로 서버를 실행 - 각각의 Git branch에서 작업할 당시에는 Dockerfile이 겹치지 않아 각자 빌드가 잘 작동 - master로 머지하는 과정에서 Dockerfile 충돌로 빌드가 되지 않음 [해결 방법] 매우매우 간단!! - 우선 Dockerfile을 각 directory 안에 별도로 생성해줌 - 각각의 Jenkins pipeline script에 Dockerfile의 경로를 지정해줌 (지정해주지 않을 경우, 상위 디렉토..
-
[CI/CD] Spring, Jenkins, Nginx, EC2, Docker로 무중단 배포 구현 (1) EC2 서버 기본 설정 (도커, 젠킨스, Nginx, JDK, MySQL, Redis 설치)Dev Ops/CI-CD 2023. 3. 30. 23:27
들어가기 전에 이번 프로젝트에서 인프라를 담당하여 무중단 배포 인프라를 구축해보았다. 배포 자체도 처음인데 무중단 배포까지 하려니 헷갈리는 것도 많았고 오류도 미친듯이 터졌지만 잘 돌아가게 구성할 수 있어서 뿌듯했다. 아쉬웠던 점이나 개선해야할 점은 뒤에 적는 것으로.. 최대한 자세히 과정을 적어보고자 한다. [ Service Architecture ] 이번 포스팅에서 구현할 서비스 구조도는 아래와 같다. 포트를 2개로 구분하여, 서버를 새로 빌드하고 배포하는 과정에서 생기는 서버다운타임 없이 서비스가 운영될 수 있도록 했다. 1. 깃랩에서 브랜치에 변경사항이 생길 때마다 웹훅을 통해 Jenkins에게 신호를 보냄 2. Jenkins가 이를 감지하여 새롭게 업데이트된 Git을 clone하고 빌드 시작하며..
-
[Docker] Docker의 기본 개념 및 실행 흐름Dev Ops/Docker 2023. 1. 21. 19:00
Docker란? : 컨테이너 기반의 오픈소스 가상화 플랫폼 - 다양한 프로그램, 실행 환경을 컨테이너로 추상화하고 동일한 인터페이스를 제공하여 프로그램의 배포와 관리를 단순화 - 백엔드 프로그램, 데이터베이스 서버, 메시지 큐 등 어떤 프로그램도 컨테이너로 추상화 가능 - 조립PC, AWS, Azure, Google cloud 등 어디서든 실행 가능 Docker Container : 격리된 공간에서 프로세스가 동작하는 가상화 기술 중 하나 📍참고: 기존의 가상화 방식 1) OS 가상화 - 호스트 OS 위에 게스트 OS 전체를 가상화하여 사용(VMware, Virtual Box) - 사용법이 간단하지만 무겁고 느려 운영환경에서 사용 불가 2) HVM(CPU 가상화), 반가상화 - 게스트 OS가 필요하지만 ..
-
[CI/CD] Jenkins 기본 개념 및 구성 요소Dev Ops/CI-CD 2023. 1. 21. 18:28
Jenkins란? CI/CD 전반적인 흐름을 관장하는 툴 - 서브버전, Git과 같은 버전 관리 시스템과 연동하여 소스의 커밋을 감지하면 자동적으로 자동화 테스트가 포함된 빌드가 작동되도록 설정 가능 Jenkins 구조 1. Jenkins Master (Server) : Jenkins 서버이자 Jenkins 파이프라인으로 정의된 모든 흐름을 관장하는 컨트롤 서버 - 각 Jenkins Slave들에게 각자의 할 일을 정해주고 분배 [ Jenkins 작업 ] ① Git 등의 리파지토리에서 푸쉬되어 받은 자료를 정기적으로 Jenkins가 확인 ② Jenkins 테스트 과정을 다양한 Jenkins Agent에서 실행시키면서 독자적 테스트 환경을 만듦 ③ Jenkins Agent 통해 얻은 결과물을 Jenkins..
-
[CI/CD] CI, CD, CI/CD 파이프라인 기본 개념Dev Ops/CI-CD 2023. 1. 21. 16:09
CI (Continous Integration, 지속적 통합) : 빌드/테스트의 자동화 과정을 의미 - 애플리케이션에 대한 새로운 코드 변경 사항이 정기적으로 빌드 및 테스트되어 공유 리포지토리에 통합됨 - 커밋할 때마다 빌드와 일련의 자동 테스트가 이루어져 동작을 확인하고 변경해 서로 충돌할 수 있는 문제를 해결 - CI/CD 파이프라인의 첫 번째 단계 CD (Continuous Delivery / Deployment) Continuous Delivery, 지속적 서비스 제공 : 개발자가 애플리케이션에 적용한 변경 사항이 버그 테스트를 거쳐 리포지토리에 자동 업로드되는 것을 의미 - 운영팀은 이 리포지토리에서 애플리케이션을 실시간 프로덕션 환경으로 배포 가능 - 귀찮은 push 작업 없이 최소한의 노력..