기타/인프라 구축과정23 [문제점] - HelloWorld Project 문제점 I. SSE 연결 지연 현상 HTTP1.1 - Http2.0 문제점 해결 Server-sent Events 기법은 Web Browser의 간섭없이 Server에서 Web Browser 단방향으로 Event를 전송하는 기법이다. 즉, Web Browser가 Server의 Event를 Subscribe를 통해서 Server의 Event를 전송받는 기법이다. Web Browser에서 Server로는 Event를 전송할 수 없다. 위의 그림은 Server-sent Events 기법을 나타내고 있다. Web Browser는 Server에게 특정 Event를 Subscribe하는 요청 전송한다. 이후에 Server에서는 해당 Event가 발생시 Web Browser에게 해당 Event를 전송한다. 하지만, .. 기타/인프라 구축과정 2023. 6. 5. [Infra] 10. 최종 아키텍처 - HelloWorld Project 개발자 개인 브랜치에서 Remote 환경의 Develop 브랜치에 Merge를 하게 되면 자동으로 빌드가 진행된다. 해당 빌드는 깃랩의 WebHook 설정과 젠킨스 설정을 통해 이루어진다. [Back] 1. 백엔드 개발자가 Develop-BE로 Merge를 진행한다. 해당 브랜치에는 Back 프로젝트만 존재한다. 2. 젠킨스에서 깃랩에 Merge된 Develop-BE 브랜치의 프로젝트 파일들을 빌드한다. 2-1. MainAPI : 서버에 존재하는 .yml 파일을 통합시켜 빌드를 진행한다. jar 파일이 생성되면 배포 폴더로 이동. 2-2. Noitfy : 서버에 존재하는 .yml 파일을 통합시켜 빌드를 진행한다. jar 파일이 생성되면 배포 폴더로 이동. 2-3. Story : 서버에 존재하는 .yml .. 기타/인프라 구축과정 2023. 6. 5. [Infra] 9. Sub 서버 ELK & 보안 설정 - HelloWorld Project /home/ubunt/elk/docker-compose.yml version: '3' services: elasticsearch: image: docker.elastic.co/elasticsearch/elasticsearch:7.10.1 container_name: elasticsearch command: > sh -c "bin/elasticsearch-plugin install analysis-nori && exec /usr/local/bin/docker-entrypoint.sh" ports: - "9200:9200" - "9300:9300" environment: - discovery.type=single-node volumes: - ./elasticsearch.yml:/usr/share/elasti.. 기타/인프라 구축과정 2023. 6. 1. [Infra] 8. Main 서버 FileBeats - HelloWorld Project FileBeats와 관련된 메인 서버의 인프라 구축 내용을 정리하려고 한다. back, notify, story 애플리케이션 서버가 존재하고 각각은 Blue-Green 무중단 배포로 만들어지는 컨테이너가 존재한다. 이때 생성되어진 각각의 컨테이너에 생성된 로그들을 수집하여 카프카로 로그 데이터를 보내줘야한다. * back은 기본적인 RestAPI를 담당하는 서버이다. 이름을 너무 대충 지었다. back/docker-compose.blue.yaml version: '3.7' services: api: image: ${DOCKER_REGISTRY}/${DOCKER_APP_NAME}:${IMAGE_TAG} container_name: ${DOCKER_APP_NAME}-blue environment: - LAN.. 기타/인프라 구축과정 2023. 6. 1. [Infra] 7. ELK Stack & Kafka 흐름 - HelloWorld Project Elastic Stack(ELK + Beats) Kafka를 추가하여 구현하였다. Kafka 를 도입하는 많은 이유 중 하나는 트래픽이 몰리면 Logstash, Elasticsearch 만으로는 부하를 견디기 힘들다고한다. 일반적으로 분산 메시징 시스템으로서, 로그 또는 이벤트 데이터를 수집하고 처리하는 중간 계층 역할을 한다. 이 아키텍처의 큰 장점 중 하나는 Kafka가 로그 데이터의 흐름을 안정화시키고 시스템이 부하에 대응할 수 있도록 해준다. Kafka Kafka는 Pub-Sub 모델을 가지는 분산 메시징 플랫폼이다. 기존 메시징 시스템처럼 Broker 가 Consumer 에게 직접 메시지를 전송하는 방식이 아니라, Consumer가 Broker 로부터 직접 메시지를 가져가는 방식이다. Produ.. 기타/인프라 구축과정 2023. 6. 1. [Infra] 6. 무중단 배포 - HelloWorld Project 이전에 정리하는 게시글에서 Back과 Front를 배포를 할 때 “deploy.sh”를 통해 진행된다. 해당 파일은 어떠한 컨테이너를 띄울지에 대한 쉘 스크립트로 작성된 파일이며, 젠킨스 파이프라인에서 해당 파일을 실행하여 “Blue-Green” 무중단 배포를 진행하게 된다. 필자가 진행한 프로젝트는 EC2 서버 하나로 진행을 했었고 컨테이너들을 이용하여 "Blue-Green" 배포 전략을 활용하였다. * 추후 EC2 서버 하나를 뒤늦게 발급받긴하였음 애플리케이션 서버를 실행한다는 것은 최소 1개의 관련 컨테이너가 구동중이여야하며, 만약 해당 애플리케이션 서버가 업데이트를 하는 경우, 구동 중인 컨테이너는 다운되고 빌드와 배포하는 그 시간동안 페이지를 찾을 수 없게된다. 해당 프로젝트에서 진행한 “Blu.. 기타/인프라 구축과정 2023. 5. 24. [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. 이전 1 2 3 다음 반응형