반응형 기타80 [Infra] 5. Jenkins Front 빌드 & 배포 - HelloWorld Project “[Infra] 3-2. Jenkins Back 빌드 & 배포 - HelloWorld Project” 게시글에서 Back 애플리케이션 빌드 및 배포 작업을 진행했다. [Infra] 4. Jenkins Back 빌드 & 배포 - HelloWorld Project 브랜치 전략 필자가 진행한 프로젝트의 브랜치 전략은 Feature, Develop-BE, Develop-FE, Develop, Master이다. 먼저, 백엔드, 프론트 담당을 나누고 각 팀원마다 Feature 브랜치를 생성하여 자신의 담당 브랜치 baebalja.tistory.com 이번 포스팅에서는 Front의 빌드 & 배포 내용을 정리하려고 한다. 먼저, Develop-BE에 작업물이 반영되면 자동으로 깃랩에서 빌드 및 배포를 진행을 하게 되는.. 기타/인프라 구축과정 2023. 5. 24. [Infra] 4. Jenkins Back 빌드 & 배포 - HelloWorld Project 브랜치 전략 필자가 진행한 프로젝트의 브랜치 전략은 Feature, Develop-BE, Develop-FE, Develop, Master이다. 먼저, 백엔드, 프론트 담당을 나누고 각 팀원마다 Feature 브랜치를 생성하여 자신의 담당 브랜치로 Merge를 진행한다. 예를들면, 필자는 Feature 개인 브랜치를 만들어 작업을 진행하고 백엔드 담당이기에 Develop-BE에 Merge, Pull을 진행한다. 프론트와의 통신을 하기위해 EC2 서버에 우선 Back 애플리케이션 컨테이너를 구동을 진행하였다. 물론, local에서 Back 소스 코드, Front 소스 코드를 실행하여 통신을 진행해도 되지만, 프론트가 디자인을 진행하는동안 Back은 어느정도 API 설계 및 구현이 완료되었다. 그렇기때문에,.. 기타/인프라 구축과정 2023. 5. 24. [Infra] 3. Jenkins 설정 - HelloWorld Project | /home/ubuntu/jenkins/Dockerfile FROM jenkins/jenkins:lts USER root # Install Docker RUN apt-get update && \\ apt-get -y install apt-transport-https \\ ca-certificates \\ curl \\ gnupg2 \\ zip \\ unzip \\ software-properties-common && \\ . /etc/os-release && \\ curl -fsSL > /tmp/dkey; apt-key add /tmp/dkey && \\ add-apt-repository \\ "deb [arch=amd64] \\ $(lsb_release -cs) \\ stable" && \\ apt-.. 기타/인프라 구축과정 2023. 5. 24. [문제점] Infra. Nginx 오류 (80포트 중복) - HelloWorld Project root@ip-172-26-14-208:/etc/nginx/conf.d# certbot --nginx -d 도메인명 Saving debug log to /var/log/letsencrypt/letsencrypt.log Error while running nginx -c /etc/nginx/nginx.conf -t. nginx: [emerg] a duplicate default server for 0.0.0.0:80 in /etc/nginx/sites-enabled/default:22 nginx: configuration file /etc/nginx/nginx.conf test failed The nginx plugin is not working; there may be problems with your .. 기타/인프라 구축과정 2023. 5. 24. [Infra] 2. Nginx 설치 및 HTTPS 설정 - HelloWorld Project Nginx 설치 sudo apt-get install nginx 상태 확인 : sudo service nginx status 시작 : sudo service nginx start 재시작 : sudo service nginx restart 중지 : sudo service nginx stop 설정 리로드 : sudo service nginx reload Certbot Certbot은 Let's Encrypt 인증서를 쉽게 발급하고 갱신할 수 있도록 도와주는 도구라고 한다. Let's Encrypt는 무료로 SSL/TLS 인증서를 발급해주는 인증 기관으로, HTTPS를 사용하는 웹사이트에서 보안 통신을 위해 사용된다. Certbot을 이용하면 명령어를 통해 인증서를 발급하고 갱신할 수 있으며, 이를 통해 HT.. 기타/인프라 구축과정 2023. 5. 24. [Infra] 1. EC2 환경 구축 - HelloWorld Project | 해당 명령어는 먼저 패키지 관리자를 업데이트한다. 그리고 다음과 같은 패키지들을 설치한다. $ sudo apt update $ sudo apt-get install -y ca-certificates \\ curl \\ software-properties-common \\ apt-transport-https \\ gnupg \\ lsb-release ca-certificates: TLS/SSL 인증서를 검증하기 위한 패키지. curl: URL을 통해 데이터를 전송하기 위한 도구. software-properties-common: 소프트웨어 소스를 추가하거나 제거하기 위한 도구. apt-transport-https: HTTPS를 통해 패키지를 다운로드하기 위한 도구. gnupg: 암호화 기능을 제공하는 .. 기타/인프라 구축과정 2023. 5. 24. [Infra] 10. 최종 아키텍처 및 전체 흐름 - Voda Project 개발자 관점 개발자 개인 브랜치에서 Remote 환경의 Develop 브랜치에 Merge를 하게 되면 자동으로 빌드가 진행된다. 해당 빌드는 깃랩의 WebHook 설정과 젠킨스 설정을 통해 진행된다. 1. 개발자들이 Merge를 진행한다. 2. 젠킨스에서 깃랩에 Merge된 Develop 브랜치의 프로젝트 파일들을 빌드한다. 2-1. Java : 서버에 존재하는 db.yml, oauth.yml을 통합시켜 빌드를 진행한다. jar 파일이 생성되면 배포 폴더로 이동. 2-2. Vue : 서버에 존재하는 env 파일을 통합시켜 빌드를 진행한다. 빌드된 dist 폴더를 배포 폴더로 이동. 2-3. Python : 인공지능 모델 같은 경우 서버에 세팅한다. 서버에 존재하는 .h5(음성 분류 모델 가중치 파일), .. 기타/인프라 구축과정 2023. 4. 4. [Troubleshooting] http 버전 변경을 통한 문제점 해결 - Voda Project 이전 포스팅에서 Nginx 설정 파일에 http 2.0으로 설정되어있는데 기존에는 http 1.1을 사용하고 있었다. 필자의 팀원들은 프로젝트를 진행할 때 백엔드, 프론트 포트 8080, 8081로 설정을 해서 localhost에서 api 통신을 테스트하는 작업을 진행하였다. 해당 테스트를 진행할 때 속도 문제나 에러 사항은 발생하지 않았다. 하지만 해당 프로젝트가 배포가 되고 http 통신을 했을 때 다음과 같은 문제점이 발생하였다. 서버에서 빌드 및 배포를 했을 때 즉시 라우팅 되지 않는다. 예를 들면, 로컬 호스트에서 소셜 로그인을 진행하면 DB 조회를 통해 회원인지를 체크한다. 만약 회원이 아니라면 회원가입 페이지로 포워딩된다. 하지만 배포 환경에서는 회원 가입 페이지로 갈 때도 있고 가지 않을 .. 기타/인프라 구축과정 2023. 4. 4. [Infra] 9. MariaDB 인덱스 설정 및 쿼리 성능 개선 - Voda Project 해당 프로젝트에서는 소셜 로그인 (카카오)를 기준으로 로그인이 진행된다. 우리 서비스에서는 소셜 로그인을 통해 받아온 email 정보를 가지고 유저 정보를 확인한다. 즉, PK 값이 아닌 컬럼 (email)은 pk 값과 동일한 역할을 한다. 그러므로 email 컬럼에 인덱스를 적용하여 쿼리 성능을 측정해보려고 한다. 먼저 서버 환경에서 MariaDB 컨테이너 내부로 접속한다. MariaDB [voda]> select @@profiling; +-------------+ | @@profiling | +-------------+ | 0 | +-------------+ 1 row in set (0.000 sec) MariaDB [voda]> set profiling = 1; Query OK, 0 rows aff.. 기타/인프라 구축과정 2023. 4. 4. [Infra] 8. Blue-Green 무중단 배포(2) - Voda Project 이전 포스팅에서 무중단 배포를 하기 위한 컨테이너 구동 쉘 스크립트를 작성하였다. 해당 쉘 스크립트는 젠킨스 파이프라인에서 빌드된 이미지를 가지고 컨테이너를 생성한다. 생성 흐름은 블루 컨테이너가 현재 존재하지 않는다면 블루 컨테이너를 띄운다. 만약 블루 컨테이너가 구동 중이라면 그린 컨테이너를 구동 시키고 블루 컨테이너를 내린다. 이러한 프로세스로 스와핑이 발생한다. 그렇다면 사용자의 요청이 들어왔을 때 어떠한 컨테이너로 포트 포워딩을 할 지 결정하는 것은 개발자의 몫이다. 필자는 컨테이너의 Up/Down에 의해 변경되어지는 포트 포워딩을 upstream을 활용하여 무중단 배포를 진행하였다. | /etc/nginx/conf.d/voda.conf upstream app { least_conn; serve.. 기타/인프라 구축과정 2023. 4. 4. 이전 1 2 3 4 5 ··· 8 다음 반응형