본문 바로가기

728x90

전체 글

(86)
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..
JPA 컬렉션 조회 최적화 JPA를 활용하여 병원 검색과 리뷰 검색을 구현해 봤다. 테이블 관계는 아래와 같다. where 절의 like를 사용하여 진료 과목, 병원 이름, 태그를 검색하게 했고, JMeter를 통해 성능 테스트를 했다. JMeter의 조건은 아래와 같다. Number of Threads (users) : Thread의 수(가상 사용자) Ramp-up period (seconds) : 요청 주기(초) Loop Count : 테스트를 반복하는 횟수 Infinite - 무한대로 호출 100명의 사용자가 1초에 3번씩 요청을 하게 설정했다. 1. 엔티티를 DTO로 변환 및 한계 돌파 컬렉션을 fetch join하면 페이징이 불가능하고, 일대다 조인이 발생하므로 데이터가 예측할 수 없을 정도로 증가한다. 또한 중복 데이터..
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위의 블로그 글을 읽는 걸 추천드립니다. 원래는 * * * * *가 이상적이지 않지만, 토이 프로젝트이고 즉각적인 결과를 얻고 싶기에 위의 크론 표현식을 사용했습니다. Git..
Jenkins를 활용한 CI/CD 구축(1/4) - EC2 서버 Spring boot 빌드 1. CI/CD 정의 CI(Continuous Integration)는 VCS(GIT 등)에서 PUSH가 되면 자동으로 빌드가 실행돼서 안정적인 배포 파일을 만드는 과정이다. 단위 테스트, 컴파일, 테스트, 패키징 작업 등이 포함됐다. 그리고 이 빌드 결과를 배포까지 진행하는 과정을 CD(Continuous Deployment)라고 한다. CI에 의해서 패키징 된 결과물들을 다시 개발서버, 테스트 서버, 운영 서버에 배포하여 개발 생산성을 높인다. 예전에는 각자가 개발한 코드를 합칠 때마다 큰 일이었다. 그래서 매주 코드 Merge날을 정해서 각자가 개발한 코드를 합치는 일만 진행했었다. 이런 수작업 때문에 생산성이 좋지 않았으며, 개발자들은 지속해서 코드가 통합되는 환경을 수동으로 구축하게 되었다. 그..
EC2로 24시간 서버 운영 - Nginx (3/3) 1. Nginx란? EC2 서버에서 빌드된 vue 파일들과 빌드된 jar 파일을 연동시켜야 합니다. 이를 위해 Nginx의 reverse proxy를 이용할 겁니다. Nginx는 웹서버로 HTTP 요청을 읽어서 응답을 해주는 프로그램입니다. 웹 서버뿐만 아니라 리버스 프록시, 캐싱, 로드 밸런싱, 미디어 스트리밍 등의 다양한 역할을 해주는 오픈소스 소프트웨어입니다. 고성능 웹서버이기 때문에 대부분 서비스들이 현재 Nginx를 사용하고 있습니다. proxy 서버는 클라이언트가 자신을 통해 네트워크 서비스에 접속하게 해줄 수 있는 서버를 뜻합니다. Reverse Proxy란 클라이언트가 Reverse Proxy에 요청하면 관련 요청에 따라 적절한 내부 서버에 접속. 결과를 받은 후 클라이언트에 전달해 줍니다..
EC2로 24시간 서버 운영 - RDS (2/3) 1. 데이터베이스 운용 EC2서버와 데이터베이스를 연동하는 데 크게 두 가지 방법이 있습니다. 1) 직접 DB 설치 EC2에서 직접 데이터베이스를 설치해 다루게 되면 모니터링, 백업 ,HA 구성 등을 모두 직접 해야 합니다. 처음 구축할 때 며칠이나 걸릴 수 있습니다. 2) RDS RDS는 AWS에서 지원하는 클라우드 기반 RDBMS입니다. 데이터베이스를 설치, 운영 및 확장할 수 있습니다. 모니터링, 백업 등의 운영 작업을 자동화하여 개발자는 개발에만 집중할 수 있습니다. MySQL, Auora 등 원하는 DB 엔진을 선택할 수 있고, Amazon RDS on AWS Outposts를 통해 온프레미스에 배포할 수 있습니다. RDS 가격은 라이센스 비용에 영향을 받습니다. MySQL, PostgresSQ..
EC2로 24시간 서버 운영 - Spring boot + vue.js (1/3) 1. 24시간 서버 운영 4가지 방법이 있습니다. 1) 개인 PC 접근성이 좋고 서버 구입 비용이 없으나, 자신의 컴퓨터에 24시간 구동을 해야 합니다. 이러면 소음 때문에 제대로 잘 수가 있을련지?... 2) 웹호스팅 주로 PHP에서 많이 사용합니다. 하나의 서버(OS)에 여러 서버가 입주합니다. 가격이 저렴하나 환경이 제한됐습니다. 이외에도 트래픽 제한, 느린 속도, 도메인 등록 제한 문제가 있습니다. 3) 서버 호스팅 & 코로케이션 호스팅 업체를 통해 서버를 대여합니다. 가성비가 있지만 서버 설정을 직접해야 합니다. 서버를 인수 후에는 위의 사진처럼 코로케이션 형태로 전환해야 합니다. 4) 클라우드 AWS, Azure가 여기에 속했습니다. 이용한 만큼 지불하는 형태로 설정과 관리가 비교적 쉽습니다...

728x90