본문 바로가기

728x90

DevOps

(14)
AWS CM과 로드 밸런스로 HTTPS로 변환하기 HTTPS를 변환하는 방법에는 크게 1) 웹서버를 사용하는 방식과 2) AWS를 사용하는 방법이 있다. 두 개의 공통점 모두 SSL/TLS 인증서가 필요하다. 이 포스팅에서는 AWS를 사용하여 HTTPS로 변환하는 방법을 소개하고자 한다. 참고로 웹서버(NGINX) HTTPS 변환은 Certbot으로 SSL 발급, Nginx로 HTTPS로 리다이렉트 nginx HTTP 로 들어오면 강제로 HTTPS 로 전환하도록 설정하기(force redirect to SSL) www.lesstif.com 위의 두 블로그 글을 참고하길 바란다. 1. 도메인 생성 SSL을 발급하려면 먼저 도메인을 생성해야 한다. 필자는 대표적인 도메인 사이트 가비아를 사용하였다. (꼭 가비아가 아니라 무료 도메인 사이트를 사용해도 상관이..
AWS 네트워킹의 등장과 다양한 기능들 (1/2) ※ 본 내용은 AWS Summit 2023 내용을 정리한 글입니다. 1. AWS 등장 배경 전통적인 데이터센터 네트워크는 아래와 같다. 데이터 센터 연결 라우터/방화벽으로 외부망 연결 전용선, VPN을 이용한 연결 네트워크 보안 방화벽, IP 기반 접근 통제(ACL) 웹방화벽, DDOS 방어 등 확장성/가용성 L4/L7 부하 분산(LB) 개별 장비 업그레이드 재해복구 센터(DR) 추가 연결 위의 인프라를 구축하기 위해서 네트워크 운영자는 고민이 많다. 1) 보안, 2) 클라우드 환경과의 연결성, 3) 새 네트워크 환경에서의 민첩성 이 많은 걸 고려하면서 처음부터 개발한다? 개발, 유지 보수 비용이 장난이 아닐 것이다. 2. VPC Amazon Virtual Private Cloud(Amazon VPC)는..
도커의 원리와 가상화 1. Process 도커를 알아보기 전에 Process에 대해 알아보겠다. 프로세스는 프로그램이 실행된 단위이다. 작업 표시줄에 들어가보면 위의 그림처럼 프로그램이 실행된 프로세스들을 볼 수 있다. 그러면 Chrome이 왜 여러 개 띄어져있을까? Multi- tasking 때문이다. 위의 사진처럼 크롬은 멀티 태스킹을 제공하여 여러 개의 브라우저 탭을 동시에 사용할 수 있다. 이 포스팅은 도커에 관한 포스팅이라서 멀티 태스킹의 자세한 설명은 생략하겠다. 다시 프로세스로 돌아가서 기존에는 프로세스가 위의 사진처럼 실행이 된다. User 계층에서 프로세스가 실행되고, PID는 프로세스 고유의 ID를 나타낸다. Kernel 계층에서 프로세스를 관리하고, H/W 계층에서는 CPU와 RAM에 메모리를 할당받는다...
EC2에 SonarQube 설치 & Jenkins로 코드 분석하기 1. SonarQube란? 소스 코드의 실행 없이 정적으로 프로그램의 문제를 찾는 정적 분석 도구입니다. 지속적인 통합과 분석을 할 때 사용되는 솔루션으로 코드의 품질을 높이기 위해서 코드의 이슈, 복잡성 등을 분석해서 코드가 사용할 수 있는 가용 범위 혹은 문제가 있는 코드를 분석해 줍니다. 버그를 찾는다든가 아니면 취약성 있는 코드를 찾을 수 있다. 또한, 코드 smell을 감지하여 불필요한 코드와 코드의 이상 여부를 체크할 수 있습니다. 이러한 작업을 통해서 코드의 품질을 높일 수 있습니다. 다양한 언어에 SonarQube가 사용이 되고, 특히 CI/CD 부분에서 자주 사용이 됩니다. 2. 프로젝트에 SonarQube 적용 기존 프로젝트의 build.gradle 파일을 수정해줍니다. 기존 plugi..
Jenkins를 활용한 CI/CD 구축(4/4) - Pipeline 구축 ※ 1, 2, 3편을 안 보고 이 포스팅을 볼 경우에 이해가 안 될 수가 있습니다. 1, 2, 3편을 연달아 보시는 걸 추천드립니다. 1. 파이프 라인이란? 단일 작업이 아니라 연쇄적인 작업들을 이어주게 합니다. Jenkins에는 파이프 라인을 구축하는 2가지 방식이 있습니다. 1) Delivery Pipeline Item 타입의 프로트타입의 연장선입니다. Jenkins 프로젝트 마지막의 빌드 후 조치에서 Build other projects를 선택. Projects to build에서 첫 번째 단계 이후에 실행할 Jenkins 프로젝트명을 적으면 됩니다. (반드시 두 번째 단계에서 실행할 Jenkins 프로젝트가 구성되야 한다.) Trigger only if build is stable을 선택하여 안정..
Jenkins를 활용한 CI/CD 구축(3/4) - Docker를 활용한 무중단 배포 1. 무중단 배포가 필요한 이유 이전 포스팅에서 치명적인 결점이 무엇이라 생각하시나요? 배포할 때 프론트 엔드는 실시간으로 파일이 변경되는 반면, 백엔드는 새로운 Jar 파일이 실행되기 전까지 기존 Jar 파일을 종료시키기 때문에 서비스가 일시적으로 중단이 됩니다. 만약 배포하는 동안(downtime) 사용자가 해당 서비스에 접근한다면 정상적으로 작동이 안 되므로 사용자 경험에 부정적인 영향을 끼칩니다. 그러므로 무중단 배포를 통해 서비스를 지속적으로 제공함으로써 사용자 경험을 향상시키고, 서비스의 신뢰성을 높일 수 있게 하는 것이 중요합니다. 2. 전략 무중단 배포 방식은 여러가지 방식이 있지만, 그중 Rolling 방식과 Blue/Green 방식을 간략히 소개하겠습니다. 1) Rolling 방식 Ro..
Jenkins를 활용한 CI/CD 구축(2/4) - publish over ssh 1. Poll SCM 기존의 item의 구성을 클릭합니다. Poll SCM을 선택합니다. 여기서 schedule이 나올 텐데 * * * * *을 입력합니다. 크론 표현식을 뜻하며 자세한 건 https://zamezzz.tistory.com/197 [Cron] 크론(cron) 표현식 정리 ■ Cron (크론) cron이란? 유닉스 계열의 잡 스케줄러 ● Cron 표현식 - 필드 Cron 스케줄러의 정규 표현식입니다. 7개의 각 필드로 구성되어 있으며, 각 필드의 내용은 아래와 같습니다. 자세한 설명은 zamezzz.tistory.com 위의 블로그 글을 읽는 걸 추천드립니다. 원래는 * * * * *가 이상적이지 않지만, 토이 프로젝트이고 즉각적인 결과를 얻고 싶기에 위의 크론 표현식을 사용했습니다. Gi..
Jenkins를 활용한 CI/CD 구축(1/4) - EC2 서버 Spring boot 빌드 1. CI/CD 정의 CI(Continuous Integration)는 VCS(GIT 등)에서 PUSH가 되면 자동으로 빌드가 실행돼서 안정적인 배포 파일을 만드는 과정이다. 단위 테스트, 컴파일, 테스트, 패키징 작업 등이 포함됐다. 그리고 이 빌드 결과를 배포까지 진행하는 과정을 CD(Continuous Deployment)라고 한다. CI에 의해서 패키징 된 결과물들을 다시 개발서버, 테스트 서버, 운영 서버에 배포하여 개발 생산성을 높인다. 예전에는 각자가 개발한 코드를 합칠 때마다 큰 일이었다. 그래서 매주 코드 Merge날을 정해서 각자가 개발한 코드를 합치는 일만 진행했었다. 이런 수작업 때문에 생산성이 좋지 않았으며, 개발자들은 지속해서 코드가 통합되는 환경을 수동으로 구축하게 되었다. 그..

728x90