해결된 질문
작성
·
152
0
만들어진 게시판을 간단하게 배포를 하려면 어떤 순서로 하는 것이 좋을까요? 직접 배포를 해보고 데이터의 이동 흐름을 보고 싶어서요.
GPT 선생님은 아래와 같이 하라고 하는데, 선생님께서 생각하는 간단한 방법이 있는지 궁금합니더...
Docker Compose 파일 작성 (docker-compose.yml
)
애플리케이션 컨테이너화 (Dockerfile)
서버(배포 환경)에서 실행
1⃣ docker-compose.yml
을 작성해서 모든 서비스(MySQL, Redis, Kafka, App)를 한 번에 실행
2⃣ Dockerfile
을 작성해서 애플리케이션을 컨테이너화
3⃣ 서버에서 docker-compose up -d --build
실행으로 배포 완료
답변 1
1
재근님, 안녕하세요!
강의 완강하시고 배포까지 연습해보고 계시군요! 대단하십니다! 👍
일단 배포 전략은 너무 다양할 수 있어서, 너무 강의에 국한해서 진행할 필요는 없을 것 같습니다!
개인적으로는 단일 애플리케이션 배포 전략에 대해 따로 경험해보고 진행해보는걸 추천드립니다.
본 강의는 MSA 방향성 때문에 애플리케이션도 많아서, 아마 제대로 띄우려면 복잡성도 크고 서버 비용이 들어갈 수도 있을 것 같네요.
정말 단순하게 서버 1대에 모든걸 배포하는 상황에서는 다음과 같이 할 수 있을 것 같습니다.(사용하시는 서버 스펙에서 다 실행이 될진 모르겠지만)
MySQL/Redis/Kafka를 서버 로컬에 띄워주고, 각 애플리케이션도 포트를 모두 달리 해서 띄워줍니다.
Nginx 서버를 설치하고, api path에 따라서 특정 포트로 실행되고 있는 애플리케이션으로 라우팅해주도록 합니다.
예를 들어, 서버에 80포트(http)로 /article url path로 접근하면,
nginx가 그 요청을 받아서 9000포트에 실행된 게시글 서비스로 라우팅해주는 구성입니다.
위 과정에서는 Docker는 쓰셔도 좋고, 안 쓰시고 직접 설치해보셔도 좋습니다.
Docker가 분명 편리함은 있지만, 직접 설치하면서 이슈 해결해 나가는 것도 좋은 경험이 됩니다.
https로 통신해보셔도 좋고요!
무중단 배포 또는 배포 자동화를 추가로 고민해보셔도 좋습니다.
조금 더 심화한다면,
각 마이크로서비스별로 개별 서버 군에 배포한 뒤,
각 서버 군 간에는 로드밸런서를 이용하여 통신을 해볼 수도 있습니다. (개별 서비스별로 scale-out 가능하도록)
MySQL, Redis, Kafka도 독립된 서버에 설치할 수 있고요.
일단 간단한 방법으로 해보시는걸 추천드리네요.
배포는 간단해보여도 인프라 개념이 잡혀있지 않으면 구성이 어떻게 되어있는건지 이해가 어려울 수 있습니다.
잘 해내시길 바랍니다!
사랑합니다