-
배포 - Docker를 이용한 복잡한 어플리케이션 만들기 (설계)Infra/CI-CD 2023. 1. 5. 12:46
풀스택 어플리케이션 (multi-container application)
구현 기능
1. 클라이언트에 input box에 글을 입력한다.
2. 입력된 data가 NodeJS로 구성된 API서버를 거쳐친다.
3. API 거치 data가 MySQL DB에 저장되 된다.
4. DB에 저장된 data는 다시 클라이언트에 출력된다.
5. 이후에 컨테이너를 삭제했다 다시 생성해도 저장된 데이터는 남아있도록 한다.
두가지 설계 방식
Nginx의 Proxy를 이용한 설계
Nginx를 이용하여 클라이언트에서 오는 요청을 백엔드 서버와 프론트 서버로 나눠주는 구조이다.
클라이어트와 프론트앤드 백앤드 서버들간 사이에 Nginx가 자리하고 있다. 클라이언트가 여러가지 요청을 보낼때 location/api~~~ 요청을 보내면 해당 요청은 백엔드 서버로 간다. 그렇지 않다면은 프론트엔드 서버로 가도록 routing을 시켜주는 것이다.
장점
1. Request를 보낼때 URL 부분의 host이름이 바뀌어도 변경시켜주지 않아도 된다.
2. 포트가 바뀌어도 변경을 안해주어도 된다.
단점
nginx 설정, 전체가 다소 복잡하다.
Nginx
Nginx 의 기능을 크게 두가지로 나눌 수 있다. 하나는 프론트에서 정적파일을 제공해주는 서버로써 역할을 하는 것이고, 두번째는 브라우저에서 오는 요청들을 routing
Nginx는 정적파일을 제공만 해주는 설계
Nginx는 프론트 서버로만 사용하여 클라이언트에서 정적파일을 요구할때 제공해주는 형식으로만 쓰인다.
클라이언트(브라우저)가 포트 번호를 보고 요청을 받고 응답을 보내는 것이다. 80번 포트를 통해서 간다면 프론트로가고 5000번 포트를 이용해서 가변 백엔드로 보내 는 것이다.
장점
설계가 간단하여 구현하기에 용의 하다.
단점
host name이나 포트 변경이 있을때 Request URL도 변경시켜주어야 한다.
'Infra > CI-CD' 카테고리의 다른 글
배포 - Multi App을 만들기위한 Dockerfile (MySQL) (0) 2023.01.05 배포 - Multi App(ReactJS/NodeJS)와 위한 Dockerfile 만들기 (0) 2023.01.05 배포 - AWS Elastic Beanstalk (0) 2023.01.03 배포 - Travis CI (0) 2023.01.02 배포 - 운영환경을 위한 도커 image를 위한 Dockerfile작성하기 (0) 2023.01.01