Edge 서버를 포함한 Docker 이미지 및 Docker Compose 수정

날아올라돼지야·2024년 8월 28일
0

마이크로서비스 네트워크의 Edge 서버를 포함한 모든 프로젝트에 대해 Docker 이미지를 생성하고, 이를 Docker Hub에 푸시하는 방법을 다루겠습니다. 또한, Docker Compose 파일을 업데이트하고 Docker 컨테이너 환경에서 Edge 서버와 관련된 모든 변경 사항을 테스트할 준비를 해보겠습니다.

1. 헬스 체크 엔드포인트 활성화:

  • accounts, loans, cards 마이크로서비스에 헬스, 레디니스, 라이브니스 관련 엔드포인트를 활성화했습니다.
  • application.yml 파일에 관련 설정을 추가했습니다:
    management:
      endpoints:
        web:
          exposure:
            include: health,info
      health:
        livenessstate:
          enabled: true
        readinessstate:
          enabled: true

2. Docker 이미지 생성:

  • 모든 마이크로서비스 및 Edge 서버에 대해 Docker 이미지를 생성했습니다.
  • Maven을 사용하여 이미지를 생성하는 명령어는 다음과 같습니다:
    mvn compile jib:dockerBuild
  • 각 프로젝트 폴더(accounts, loans, cards, config server, Eureka server, gateway server)에서 이 명령을 실행하여 이미지를 생성했습니다.

3. Docker 이미지 확인:

  • 생성된 Docker 이미지를 확인하기 위해 다음 명령을 사용했습니다:
    docker images
  • Docker Desktop에서도 생성된 이미지를 확인했습니다.

4. Docker Hub에 Docker 이미지 푸시:

  • 생성된 Docker 이미지를 Docker Hub에 푸시하기 위해 다음 명령을 사용했습니다:
    docker image push docker.io/<DockerHub-Username>/<Image-Name>:<Tag>
  • 예시:
    docker image push docker.io/eazybytes/accounts:S9
  • 이 과정에서 모든 Docker 이미지를 Docker Hub에 푸시했습니다.

중간 요약

마이크로서비스 네트워크의 모든 구성 요소에 대해 Docker 이미지를 생성하고 이를 Docker Hub에 푸시하는 과정을 이해할 수 있었습니다. 이러한 과정을 통해 로컬 환경이 아닌 Docker 컨테이너 환경에서 마이크로서비스를 테스트할 준비가 완료되었습니다. Docker 이미지 생성을 통해 다양한 환경에서 마이크로서비스를 쉽게 배포하고 테스트할 수 있는 유연성을 확보할 수 있습니다.

Docker 이미지 생성과 푸시 작업이 완료되면 다음 단계로 Docker Compose 파일을 업데이트하고, Docker 컨테이너 환경에서 마이크로서비스 네트워크를 실행하고 테스트할 수 있습니다.

Docker Hub에 push & Docker Compose 파일 업데이트

이제 Section 9에서 작업한 모든 마이크로서비스와 Gateway 서버의 Docker 이미지를 Docker Hub에 푸시한 후, Docker Compose 파일을 업데이트하여 Edge 서버(Gateway 서버)와 관련된 모든 변경 사항을 Docker 컨테이너 환경에서 테스트 해보겠습니다.

1. Docker 이미지 푸시:

  • Section 9에서 작업한 모든 마이크로서비스와 Gateway 서버의 Docker 이미지를 Docker Hub에 푸시했습니다.
  • 모든 이미지는 S9 태그를 사용하여 푸시되었습니다.

2. Docker Compose 파일 업데이트:

  • Gateway 서버를 Docker Compose 파일에 추가했습니다.
  • 기존 S8 태그를 S9로 업데이트했습니다.
  • depends_on 설정을 추가하여, Gateway 서버가 다른 마이크로서비스(Accounts, Loans, Cards)의 상태가 'healthy'일 때만 시작되도록 했습니다.
  • 각 마이크로서비스(Accounts, Loans, Cards)에 대해 healthcheck 설정을 추가했습니다.

3. Docker Compose 실행:

  • docker-compose up -d 명령어를 사용하여 모든 컨테이너를 실행했습니다.
  • Docker Desktop에서 모든 컨테이너가 정상적으로 실행되는 것을 확인했습니다.
  • 각 마이크로서비스의 데이터베이스에 데이터를 삽입하고, fetchCustomerDetails() API를 통해 데이터를 조회하여 모든 것이 올바르게 동작하는지 확인했습니다.

4. 로그 검증:

  • 각 마이크로서비스(Account, Loans, Cards)에서 correlationId를 확인하고, Gateway 서버에서 생성된 correlationId가 각 마이크로서비스에 제대로 전달되었는지 검증했습니다.

5. Docker Compose 파일 복사:

  • 업데이트된 Docker Compose 파일을 prodqa 프로필에 복사하여 프로덕션 및 QA 환경에서도 동일한 설정을 사용할 수 있도록 했습니다.

결론

마이크로서비스 네트워크의 모든 구성 요소에 대해 Docker 이미지를 생성하고 이를 Docker Compose를 사용해 실행하는 방법을 학습했습니다.

또한, Edge 서버(Gateway 서버)를 사용하여 외부 트래픽을 수신하고 이를 올바르게 마이크로서비스로 전달하는 것을 성공적으로 검증했습니다. 앞으로의 챕터에서는 Gateway 서버에 보안, 장애 허용(fault tolerance) 및 회복력(resilience) 관련하여 이야기 나누겠습니다.

이제 모든 외부 클라이언트는 각 마이크로서비스의 개별 URL을 사용하지 않고, Gateway 서버를 통해 접근할 수 있게 되었습니다. 이는 관리의 용이성과 보안을 강화하는 데 큰 도움이 됩니다.

profile
무슨 생각하며 사니

0개의 댓글