마이크로서비스를 구축할 첫 서비스는 account 서비스입니다. 계좌 관련 서비스라고 생각하면 됩니다. 먼저 프로젝트를 생성하도록 하겠습니다. IntelliJ 에 포함된 프로젝트 생성기를 통해 시작해보도록 하겠습니다.화면에 보이는 것과 같이 dependencies를 추
만약 클라이언트가 계정 정보와 고객 정보를 한 번에 요청한다면, 두 개의 서로 다른 엔티티 객체를 따로 보내는 대신, DTO 패턴을 사용하여 하나의 객체로 만들어 전달하는 것이 좋습니다.DTO 패턴은 애플리케이션의 여러 레이어 간 데이터 전송을 위한 디자인 패턴입니다.
DTO 패턴을 사용하여 클라이언트에게 데이터를 전송할 때 엔티티 클래스 대신 DTO 클래스를 사용하는 것이 좋다고 했습니다. 이는 엔티티 클래스가 데이터베이스 테이블과 직접 연결되어 있으므로, 불필요한 내부 데이터베이스 정보를 클라이언트에 노출시키지 않기 위함입니다.이
앞서 엔티티와 레포지토리 그리고 dto를 작성해봤습니다. 이제 실제 사용자 요청에 따른 응답을 정의하기 위한 엔드포인트를 작성해보겠습니다. 그러기 위해 컨트롤러를 먼저 작성해보겠습니다. AccountController에서 REST API 생성 createAccou
앞서 계좌 생성과 조회 기능을 구현했습니다. 이제 수정과 삭제 기능을 완료해 CRUD를 마무리 하도록 하겠습니다.고객은 계정 번호를 제외한 모든 정보를 업데이트할 수 있습니다. 업데이트 API는 CustomerDto 객체를 입력으로 받아, 이 객체에 포함된 계정 정보를
마지막 삭제 기능만 구현하면 계좌에 대한 CRUD가 완성됩니다. 먼저, CustomerRepository에서 findByMobileNumber 메서드를 사용하여 고객 정보를 조회합니다. 입력된 휴대폰 번호로 고객 정보를 찾고, 해당 고객이 존재하지 않으면 Resourc
현재 GlobalExceptionHandler 클래스에서는 두 가지 사용자 정의 예외(ResourceNotFoundException과 CustomerAlreadyExistsException)만 처리하고 있습니다. 그러나 애플리케이션 내에서 발생할 수 있는 모든 런타임
애플리케이션을 조금 더 개선시켜 보겠습니다. 현재는 클라이언트 요청에 대한 값 검증이 없는데, spring-boot-starter-validation 의존성을 추가하여 입력값에 대한 검증처리를 해보겠습니다.먼저, 입력 데이터 유효성 검사를 위해 spring-boot-s
먼저, 메타데이터 컬럼을 포함하는 BaseEntity 클래스에 Spring Data JPA의 감사(auditing) 기능을 적용하기 위해 필요한 애노테이션을 추가합니다.@CreatedDate: 레코드가 생성된 날짜와 시간을 자동으로 설정합니다.@CreatedBy: 레코
REST API를 문서화하는 것은 외부 기관이나 조직 내 다른 팀(예: UI 팀, 모바일 애플리케이션 팀)이 API를 소비할 때 필수적입니다. 문서화를 통해 다음과 같은 질문에 답할 수 있습니다:요청 형식은 무엇인가?응답 형식은 무엇인가?어떤 유효성 검사가 적용되어 있
마이크로서비스를 성공적으로 구축하려면 각 서비스의 크기를 적절하게 조정하고 서비스 경계를 명확히 식별하는 것이 중요합니다. 너무 큰 서비스는 마이크로서비스의 장점을 살릴 수 없고, 너무 작은 서비스는 운영상의 오버헤드를 증가시킬 수 있습니다. 도메인 기반 크기 조정 (Domain-Driven Sizing) 도메인 기반 크기 조정은 비즈니스 도메인과 밀접하...
마이크로서비스 아키텍처에서는 수백 개의 독립적인 마이크로서비스를 배포해야 합니다. 모놀리식 애플리케이션에서는 하나의 서버에 단일 애플리케이션 파일(JAR, WAR, EAR 등)만 배포하면 되지만, 마이크로서비스에서는 여러 개의 애플리케이션을 개별적으로 배포해야 합니다.
클라우드 네이티브 애플리케이션의 정의와 특징, 그리고 12요소 방법론과 15요소 방법론에 대해 논의하고자 합니다. 이러한 표준은 마이크로서비스 개발자가 알아야 할 필수 개념으로, 향후 마이크로서비스의 다양한 개념을 구축할 때 기반이 될 것입니다.클라우드 네이티브 애플리
이번엔 Spring Boot에서 Profiles 개념을 활용하여 환경별로 다른 설정을 관리하는 방법을 다뤄보겠습니다. 이 접근법을 통해, 동일한 코드베이스로 다양한 환경에서 애플리케이션을 실행할 수 있으며, 각 환경에 맞는 설정을 적용할 수 있습니다.Spring Boo
이번에는 Spring Boot 애플리케이션에서 프로파일을 외부에서 활성화하는 다양한 방법을 다룹니다. 이를 통해 환경 간에 애플리케이션을 이동할 때 코드베이스를 변경하거나 Docker 이미지를 다시 생성할 필요 없이 환경에 따라 적절한 프로파일을 활성화할 수 있습니다.
이전까지 Spring Boot의 기본 기능을 사용하여 구성 설정을 외부화할 때 발생할 수 있는 주요 한계점과 단점에 대해 논의했습니다. 이러한 단점들로 인해 대규모 마이크로서비스 환경에서 Spring Boot만으로는 구성을 효과적으로 관리하기 어렵다는 점을 강조했습니다
앞서 스프링부트만으로 Configuration 관리를 할 때의 한계를 극복하기 위해 Spring Cloud Config 프레임워크를 사용할 수 있다고 했습니다. 본격적으로 Spring Cloud Config가 무엇인지에 대해 공부해보도록 하겠습니다.https:
https://start.spring.io/프로젝트 생성하기의존성 목록Config ServerSpring Boot Actuator다운로드 받은 프로젝트를 열면 의존성이 자동 다운로드 될 것입니다. 이제 @EnableConfigServer 애노테이션을 사용하여
이번 챕터에선 Spring Cloud Config 서버의 클래스패스에 마이크로서비스 구성 파일을 저장하고 설정하는 방법을 알아볼 것입니다.이 설정을 통해 Config 서버가 각 마이크로서비스의 구성 파일을 중앙에서 관리하고, 해당 구성 파일을 로드할 수 있게 됩니다.s
Accounts 마이크로서비스의 application.yml 파일에서 prod 및 qa 관련 YAML 파일을 삭제합니다. 이제 이 파일들은 Config 서버에서 관리됩니다.application.yml 파일에서 Spring Boot 프로파일 관련 설정과 빌드 버전 정보를
이번 챕터에선 Cards 및 Loans 마이크로서비스를 Spring Cloud Config 서버와 통합하는 과정을 살펴보겠습니다. 각 마이크로서비스가 Config 서버와 올바르게 통합되었는지 확인하기 위해 Postman을 사용하여 API를 테스트하는 방법도 알아보겠습니
Spring Cloud Config 서버가 클래스 경로 대신 파일 시스템에서 구성 파일을 읽도록 설정하는 방법을 배웁니다. 클래스 경로 -> 파일 시스템이 접근 방식을 사용하면 서버 관리자가 해당 폴더의 내용을 볼 수 있는 접근 권한을 제한할 수 있기 때문에 보안이 강
이 접근 방식은 구성 파일의 버전 관리, 감사 기능, 보안 등을 강화할 수 있어 실무에서 가장 많이 추천되는 방법입니다.먼저, GitHub 리포지토리에 구성 파일을 저장합니다. 예를 들어, eazybytes-config라는 리포지토리를 생성하고, 여기에 accounts
GitHub 리포지토리에 저장된 구성 속성을 암호화된 형식으로 저장하고, Spring Cloud Config 서버에서 이를 해독하는 방법을 다룹니다. 이 방법을 통해 GitHub 리포지토리에 접근할 수 있는 사람도 민감한 데이터를 직접 볼 수 없도록 할 수 있습니다.S
이번 챕터에서는 Spring Boot Actuator와 Spring Cloud Config를 사용하여 런타임에 마이크로서비스의 구성 속성을 동적으로 새로고침하는 방법을 배웁니다. 이 방법은 마이크로서비스를 다시 시작하지 않고도 구성 속성을 업데이트할 수 있도록 해줍니다
이번 챕터에서는 Spring Cloud Bus를 사용하여 마이크로서비스의 설정을 자동으로 동기화하고 새로고침하는 방법을 배워보겠습니다. 이 방법을 사용하면 모든 마이크로서비스 인스턴스에 대해 refresh API를 수동으로 호출할 필요 없이, 한 번의 호출로 모든 인스
이번 챕터에서는 Spring Cloud Bus와 Spring Cloud Config Monitor를 사용하여 마이크로서비스 구성 변경을 자동화하는 방법을 배웁니다. 이 방법을 사용하면 GitHub의 변경 사항이 자동으로 Spring Cloud Config Server로
이전까지는 전통적인 방식의 jar파일을 통해 host OS위에 동작하는 애플리케이션을 만들었습니다.이제 Spring Cloud Config Server와 마이크로서비스들을 Docker 컨테이너로 배포하고, Docker Compose를 사용해 여러 서비스를 한번에 시작시
Config Server와 다른 마이크로서비스들이 Docker 환경에서 올바르게 시작되고 실행될 수 있도록 설정하는 방법을 다룹니다. 다음은 각 과정별로 상세히 정리한 내용입니다.Liveness와 Readiness는 애플리케이션이 정상적으로 작동 중인지, 요청을 처리할
이 챕터에서는 Docker Compose 파일을 최적화하여 중복된 내용을 제거하고, 공통 설정을 별도의 파일로 분리하는 방법에 대해 다룹니다. 다음은 각 과정별로 상세히 정리한 내용입니다.Docker Compose 파일의 최적화를 위해 공통 설정을 별도의 Yaml 파일
이 챕터에서는 모든 마이크로서비스와 Config 서버의 Docker 이미지를 생성하고 이를 Docker Hub에 배포하는 과정을 다룹니다. 각 과정별로 상세히 들어가 보겠습니다.각 마이크로서비스와 Config 서버의 Docker 이미지를 생성하기 위해 Jib 플러그인을
이 챕터에서는 default 프로파일에 대한 Docker Compose 파일을 기반으로, prod 및 qa 프로파일에 대해 유사한 Docker Compose 파일을 생성하는 과정을 다루어 보겠습니다.이를 통해 서로 다른 환경에서 동일한 Docker 이미지를 재사용할 수
이 챕터에서는 현재 마이크로서비스가 사용하는 임베디드 H2 데이터베이스를 실제 MySQL 데이터베이스로 전환하는 과정을 설명합니다. 이를 통해 로컬 환경에서 실제 MySQL 데이터베이스를 Docker 컨테이너로 설정하고, 각 마이크로서비스가 이 데이터베이스를 사용할 수
이 챕터에서는 마이크로서비스를 Docker Compose 환경에서 실행하고 MySQL 데이터베이스와의 연결을 설정하는 방법에 대해 다룹니다. 로컬 시스템에서 사용하던 데이터베이스 설정을 Docker Compose 환경에 맞게 수정하며, Docker Compose 파일을
이번엔 Docker Compose 파일을 검증하고, 마이크로서비스와 MySQL 데이터베이스 컨테이너 간의 연결을 성공적으로 설정하는 과정을 다룹니다. 이전 챕터에서 발생한 문제를 해결하고, 올바르게 컨테이너를 시작하는 방법을 설명합니다.이전 강의에서 Docker Com
이 챕터에서는 마이크로서비스 아키텍처 내에서 내부 통신과 관련된 개념과 문제점을 다루게 됩니다. 본격적으로 문제를 논의하기 전에, 마이크로서비스 환경에서의 전체 구조와 통신 경로를 이해하는 것이 중요합니다.마이크로서비스 개요: 현재 accounts, loans, car
이번 강의에서는 마이크로서비스 아키텍처에서 서비스 디스커버리(Service Discovery), 서비스 등록(Service Registration), 로드 밸런싱(Load Balancing)이라는 새로운 도전 과제를 소개했습니다. 이 과제들은 마이크로서비스 네트워크 내
이 강의에서는 전통적인 로드 밸런서를 사용하는 것이 마이크로서비스와 클라우드 네이티브 애플리케이션에서 왜 한계가 있는지 설명한 후, 그 대안으로서 서비스 디스커버리 패턴(Service Discovery Pattern)이 어떻게 문제를 해결하는지를 다룹니다. 이 패턴은
이 강의에서는 클라이언트 측 서비스 디스커버리(Client-Side Service Discovery)가 무엇인지, 그리고 마이크로서비스 환경에서 어떻게 동작하는지를 자세히 설명합니다. 이 방식은 서비스들이 서로를 어떻게 발견하고, 로드 밸런싱을 어떻게 처리하는지에 대한
이 챕터에선 클라이언트 측 서비스 디스커버리를 마이크로서비스 네트워크 내에서 구현하는 방법에 대해 다룹니다. Spring Cloud 프로젝트를 활용하여 서비스 디스커버리와 서비스 등록을 쉽게 구현할 수 있습니다. 또한, 로드 밸런싱과 마이크로서비스 간의 통신을 위해 S
이번 강의에서는 Spring Cloud Netflix 프로젝트의 Eureka를 사용하여 서비스 디스커버리 에이전트를 구축하는 방법을 다룹니다. 이는 마이크로서비스 네트워크 내에서 각 서비스가 서로를 발견하고, 등록하는 중요한 역할을 합니다. 단계별로 Eureka 서버를
이 강의에서는 Eureka 서버와 연결하여 Accounts 마이크로서비스를 설정하고 등록하는 방법을 다룹니다. 이 과정에서 Accounts 마이크로서비스는 Eureka 서버에 자신을 등록하고, 정기적으로 하트비트 신호를 보내게 됩니다. 이와 동일한 설정을 다른 마이크로
이 강의에서는 Loans 및 Cards 마이크로서비스를 Eureka 서버와 연결하여 등록하는 방법을 다룹니다. 이 과정에서 두 마이크로서비스는 Eureka 서버에 자신을 등록하고, 정기적으로 하트비트 신호를 보냅니다.각 마이크로서비스의 pom.xml 파일에 Eureka
이번 챕터에선 Eureka 서버에 마이크로서비스들이 하트비트를 보내는 과정을 알아봅니다. 하트비트는 마이크로서비스가 Eureka 서버와의 연결 상태를 주기적으로 확인하고, 서비스가 여전히 정상적으로 작동 중임을 서버에 알리는 중요한 메커니즘입니다.먼저, 모든 마이크로서
이번 챕터에서는 Eureka 서버를 사용하여 마이크로서비스 네트워크 내에서 클라이언트 사이드 서비스 디스커버리와 로드 밸런싱이 어떻게 작동하는지 설명하고, 이를 데모로 보여줍니다. 이 과정에서 Accounts 마이크로서비스에 새로운 REST API를 구축하여, 고객의
Eureka 대시보드에서 볼 수 있는 경고는 셀프 프리저베이션(Self-Preservation) 모드와 관련이 있으며, 이 개념을 이해하면 경고 메시지가 더 잘 이해될 것입니다.셀프 프리저베이션 모드는 Eureka 서버가 네트워크 문제나 일시적인 지연으로 인해 서비스
이번 챕터에서는 Eureka 서버와 각 마이크로서비스(계정, 대출, 카드) 및 Config 서버에 대한 Docker 이미지를 생성하고, 이를 Docker Compose 파일에 반영하는 과정을 다룹니다.Docker 이미지를 생성하기 전에 Docker 서버가 정상적으로 실
Loans 마이크로서비스의 두 개의 인스턴스를 시작하고 클라이언트 사이드 로드 밸런싱(Client-side Load Balancing)의 작동 방식을 데모로 확인해보겠습니다.먼저, docker-compose.yml 파일을 열고 Loans 마이크로서비스에 대한 구성을 복
이전 섹션까지는 마이크로서비스 간 내부 통신에 대한 문제점과 해결 방법에 대해 다루었습니다. 이번 섹션에서는 외부 트래픽이 마이크로서비스로 유입될 때 발생할 수 있는 문제점과 이를 해결하는 방법에 대해 알아보겠습니다.마이크로서비스 네트워크에서는 외부 클라이언트가 여러
Spring Cloud를 사용하여 마이크로서비스 네트워크 내에서 엣지 서버를 구현하는 방법을 살펴보겠습니다.Spring Cloud에는 Spring Cloud Gateway라는 프로젝트가 있으며, 이를 통해 프로덕션 수준의 엣지 서비스를 매우 쉽게 구축할 수 있습니다.
앞서 기본 라우팅 동작으로 실행까지 해봤는데, Spring Cloud Gateway를 사용하여 커스텀 라우팅을 설정하는 방법과 기본 라우팅 동작을 비활성화하는 방법을 알아보겠습니다. 주요 내용 요약: 커스텀 라우팅 설정: RouteLocator 빈을 정의하여 특정 경로에 대한 커스텀 라우팅을 설정합니다. 예를 들어, /easybank/acco...
Spring Cloud Gateway에서 다중 필터를 적용하는 방법과 사용자 정의 필터를 추가하는 방법을 알아보겠습니다.Path Predicate: 클라이언트 요청 경로가 지정된 경로와 일치하는지 확인합니다. 경로가 일치할 경우, 필터를 적용하고 실제 마이크로서비스로
Spring Cloud Gateway에서 사용자 정의 필터를 생성하는 방법을 다뤄보겠습니다.RequestTraceFilter: Gateway 서버로 외부 요청이 들어올 때마다 고유한 상관 관계 ID(Trace ID)를 생성하여 요청 헤더에 추가합니다. 이 ID는 이후
마이크로서비스 네트워크의 Edge 서버를 포함한 모든 프로젝트에 대해 Docker 이미지를 생성하고, 이를 Docker Hub에 푸시하는 방법을 다루겠습니다. 또한, Docker Compose 파일을 업데이트하고 Docker 컨테이너 환경에서 Edge 서버와 관련된 모
이번 섹션부터는 마이크로서비스를 회복력 있게 만드는 방법에 대해 이야기하고자 합니다.Resiliency은 어려운 상황을 견디고 다시 회복할 수 있는 능력을 의미합니다. 예를 들어, 우리는 코로나19라는 어려움을 겪었지만, 결국 정상적인 삶으로 돌아왔습니다. 이와 마찬가
이전 챕터에서 마이크로서비스에서의 복원력에 대해 간략히 소개했어요. 이번 챕터에서는 마이크로서비스에서 흔히 겪을 수 있는 시나리오를 통해 장애 허용(fault tolerance)이 왜 중요한지, 그리고 우리의 마이크로서비스가 일상적으로 직면할 수 있는 문제들에 대해 어
이번 강의에서는 서킷 브레이커 패턴을 실제로 마이크로서비스에 구현하는 방법을 단계별로 설명합니다. 이 패턴을 사용하면 마이크로서비스 네트워크에서 개별 서비스의 실패가 전체 시스템에 영향을 미치지 않도록 할 수 있습니다.먼저 작업할 새로운 섹션을 설정합니다:섹션 폴더 복
우리는 마이크로서비스에서 발생할 수 있는 일반적인 문제, 즉 특정 서비스가 느리게 응답하거나 전혀 응답하지 않는 상황에 대해 고려해봐야 합니다.이 문제를 해결하지 않으면 서버 리소스(스레드, 메모리 등)가 불필요하게 오래 대기하게 되어 성능 저하를 초래할 수 있습니다.
Retry Pattern은 마이크로서비스에서 특정 요청이 일시적으로 실패했을 때, 동일한 요청을 여러 번 재시도할 수 있게 해주는 패턴입니다. 특히 네트워크 문제와 같은 상황에서 재시도를 통해 요청이 성공할 가능성을 높일 수 있습니다.Retry Pattern을 구현할
이번 강의에서는 Spring Cloud Gateway를 사용하여 Retry Pattern을 구현해보겠습니다. 이 패턴은 특정 요청이 실패할 경우, 자동으로 재시도하는 기능을 제공합니다. 이번 구현에서는 Loans 마이크로서비스에 Retry Pattern을 적용할 것입니
이번 강의에서는 AccountsController 내부에서 Retry Pattern을 구현하는 방법을 다룹니다. 이전에는 Gateway Server에서 Retry Pattern을 적용했지만, 개별 마이크로서비스에서도 이 패턴을 구현할 수 있습니다. 이번에는 build-
이번 강의에서는 이미 구현된 Retry Pattern을 더욱 개선하는 방법을 다룹니다. 현재 getBuildInfo() 메서드에서 발생하는 모든 예외에 대해 재시도 작업이 수행됩니다. 하지만 특정 예외(예: NullPointerException)에 대해서는 재시도를 하
이번 강의에서는 Spring Cloud Gateway를 활용하여 Rate Limiter 패턴을 구현하는 방법을 배웁니다. Rate Limiter 패턴은 시스템에 대한 요청이 일정한 속도를 초과할 때, 해당 요청을 제한하고 HTTP 429 상태 코드를 반환하여 "Too
이번 강의에서는 Spring Cloud Gateway를 사용하여 Rate Limiter 패턴을 구현하는 방법을 단계별로 설명합니다. 이를 통해 각 사용자에 대해 초당 요청 수를 제한하고, 너무 많은 요청이 발생할 경우 HTTP 429 상태 코드를 반환하는 기능을 구현합
이번 강의에서는 Spring Boot 기반의 개별 마이크로서비스 내부에서 Rate Limiter 패턴을 구현하는 방법을 설명합니다. 이 예제에서는 getJavaVersion() 메서드를 사용하여 요청 속도를 제한합니다. 이를 통해 지정된 시간 내에 허용된 요청 수를 초
Bulkhead 패턴은 시스템 내의 컴포넌트나 서비스를 격리하여 특정 서비스의 실패나 과부하가 다른 서비스로 전파되는 것을 방지하는 패턴입니다. 이 패턴은 마이크로서비스 네트워크에서 리소스를 효율적으로 할당하고 관리함으로써 전체 시스템의 안정성과 복원력을 높이는 데 도
Resilience4j 라이브러리는 마이크로서비스의 복원력을 향상시키기 위해 다양한 패턴을 지원합니다. 이 과정에서 우리는 각 패턴을 개별적으로 구현했지만, 실제 프로젝트에서는 복잡한 비즈니스 요구 사항으로 인해 여러 패턴을 결합해야 할 때가 있습니다. 이러한 경우,
이번 강의에서는 로컬 시스템에서 구현한 Resiliency 패턴을 Docker 컨테이너에서 테스트하는 방법을 다룹니다. 이미 각 마이크로서비스에 대한 Docker 이미지를 생성하고 Docker Hub에 푸시해 두었으며, 이제 이를 통해 Docker 환경에서 Resili
마이크로서비스 구축 시 직면할 수 있는 새로운 과제, 즉 관측성(Observability) 및 모니터링(Monitoring)에 대해 다룹니다. 이 두 가지 개념을 통해 마이크로서비스 환경에서 발생하는 다양한 문제를 효과적으로 해결할 수 있는 방법을 탐구할 것입니다.첫
이번 강의에서는 관측성(Observability) 과 모니터링(Monitoring) 에 대해 깊이 있게 다루겠습니다. 이 두 개념은 마이크로서비스 시스템의 내부 상태를 이해하고 문제를 해결하는 데 매우 중요한 역할을 합니다.관측성은 시스템의 내부 상태를 외부로 드러나는
이번 강의에서는 마이크로서비스 네트워크에서 로그 집계(log aggregation)를 구현하는 방법을 알아보겠습니다. 로그는 소프트웨어 애플리케이션에서 발생하는 이벤트의 기록이며, 각 로그에는 이벤트가 발생한 시간과 이벤트의 세부 정보가 포함됩니다. 로그는 문제 해결과
이번 강의에서는 Grafana와 그 생태계에 포함된 도구들을 사용하여 마이크로서비스의 로그 집계를 어떻게 구현할 수 있는지 자세히 설명하겠습니다. 앞서 언급했듯이 Grafana는 오픈 소스 분석 및 시각화 도구로, 다양한 데이터 소스에서 수집된 메트릭스, 로그, 추적
이 강의에서는 Grafana, Loki, Promtail을 사용하여 마이크로서비스의 로그 집계를 실제로 구현하는 방법을 단계별로 설명하겠습니다. 이전 강의에서 우리는 Grafana의 권장 아키텍처와 기본적인 개념을 이해했습니다. 이제 이를 기반으로 실제로 로그 집계를
이 강의에서는 이전에 다운로드한 loki-config.yml과 promtail-local-config.yml 파일을 Docker Compose 파일에 통합하여 로그 집계를 구현하는 방법을 설명합니다. 이 강의를 통해 Docker Compose를 수정하여 Grafana,
이전 강의에서는 Grafana, Loki, Promtail을 사용하여 마이크로서비스의 로그를 수집하는 방법을 구현했습니다. 중요한 점은 마이크로서비스 자체에는 어떠한 변경도 가하지 않았다는 것입니다. 다음은 현재까지의 요약 및 다음에 다룰 내용을 소개하겠습니다.s11
이 강의에서는 두 번째 관찰 가능성과 모니터링의 기둥인 메트릭에 대해 설명합니다. 로그만으로는 애플리케이션을 모니터링하는 데 한계가 있기 때문에 CPU 사용량, 메모리 사용량, 스레드, 연결, 오류 등의 다양한 메트릭을 수집하고 분석하여 애플리케이션의 전반적인 상태를
이번 강의에서는 Micrometer를 사용하여 마이크로서비스의 메트릭을 Prometheus와 연동하는 방법을 살펴보겠습니다. Micrometer와 Prometheus를 사용하여 애플리케이션의 메트릭을 수집하고 중앙 집중화하여 모니터링할 수 있습니다.먼저, 각 마이크로서
이번 강의에서는 Prometheus를 설정하고 이를 Grafana와 통합하는 방법을 다루겠습니다. 이후, Docker Compose를 사용하여 Prometheus와 Grafana를 설정하고, 이를 통해 마이크로서비스의 메트릭스를 모니터링하는 데모를 살펴보겠습니다.먼저,
이번 강의에서는 Prometheus의 데모를 확인하고, 이를 통해 마이크로서비스 메트릭스를 어떻게 모니터링할 수 있는지 살펴보겠습니다. 또한 Prometheus와 Grafana를 통합하여 더욱 복잡한 모니터링 대시보드를 구성하는 방법도 다룰 예정입니다.마이크로서비스의
이번 강의에서는 Grafana와 Prometheus의 통합 데모를 확인하고, 이를 통해 마이크로서비스의 메트릭스를 시각화하는 방법을 알아보겠습니다.먼저 Grafana가 포트 3000에서 실행되고 있는지 확인하고, 브라우저를 열어 http://localhost:
이번 강의에서는 Grafana와 Prometheus를 활용한 고급 기능과 대시보드 구축 방법에 대해 알아보겠습니다. 이 강의에서는 Grafana와 Prometheus의 기능을 활용하여 마이크로서비스의 메트릭스를 시각화하고, 미리 구축된 대시보드를 활용하는 방법을 배웁니
이번 강의에서는 특정 조건이 충족될 때 Grafana에서 알림을 트리거하는 방법을 배웁니다. Grafana를 사용하면 Prometheus 메트릭을 기반으로 시스템의 상태를 모니터링하고, 특정 임계값에 도달하면 자동으로 알림을 보낼 수 있습니다.Grafana 홈 화면에서
이번 강의에서는 Grafana의 대시보드에서 직접 알림을 설정하고 트리거하는 방법을 배우겠습니다. 이전 강의에서는 Alert Rules를 통해 알림을 설정하는 방법을 배웠는데, 이번에는 대시보드 내에서 조건에 따라 알림을 트리거하는 방법을 살펴보겠습니다.Grafana에
이 강의에서는 관측성과 모니터링의 세 번째 요소인 분산 추적(Distributed Tracing)에 대해 알아보겠습니다. 이전 강의에서 로그(logs)와 메트릭스(metrics)라는 두 가지 주요 요소를 다뤘습니다. 이 두 가지를 통해 애플리케이션의 내부 상태와 전체적
이 강의에서는 마이크로서비스 내에서 분산 추적을 구현할 수 있는 다양한 옵션에 대해 탐색해 보겠습니다. 분산 추적은 분산 시스템에서 요청의 흐름을 추적하고 각 단계에서의 성능을 분석하는 데 중요한 역할을 합니다.Micrometer Tracing은 Micrometer 프
이번 강의에서는 OpenTelemetry를 활용하여 마이크로서비스에서 분산 추적 기능을 구현하는 방법을 살펴보겠습니다.먼저 현재 실행 중인 모든 컨테이너를 중지해야 합니다. 이를 위해 다음 명령어를 실행합니다:이 명령어를 실행하면 모든 컨테이너가 중지됩니다.이제 Ope
이번 강의에서는 Docker Compose 파일을 업데이트하여 OpenTelemetry, Tempo, Grafana 간의 통합을 설정하는 방법을 설명하겠습니다.먼저 common-config.yml 파일을 열고 모든 마이크로서비스에 공통으로 사용할 환경 변수를 정의합니다
이 강의에서는 Opentelemetry와 Tempo가 적용된 마이크로서비스에서 분산 추적이 실제로 어떻게 작동하는지 확인해보겠습니다. 다음 단계에 따라 진행해 보겠습니다.먼저, docker-compose 명령어를 사용하여 prod 프로파일의 모든 컨테이너를 시작합니다.
이 강의에서는 분산 추적 기능이 어떻게 작동하는지 직접 확인해 보겠습니다. 이를 위해 Grafana에서 Tempo를 활용하여 추적 정보를 시각화하고 분석하는 방법을 보여드리겠습니다.먼저 Grafana에 접속한 후, Loki 데이터 소스를 통해 accounts 마이크로서
이번 강의에서는 Loki 로그에서 Tempo로 바로 이동하여 분산 추적 정보를 시각화하는 방법을 설명하겠습니다. 이 기능을 통해 개발자는 로그에서 Trace ID를 찾아 Tempo를 통해 전체 추적 정보를 바로 확인할 수 있습니다.먼저, Grafana의 Loki 데이터
보안은 웹 애플리케이션, 모바일 애플리케이션, 그리고 마이크로서비스를 구축할 때 가장 중요한 요소 중 하나입니다. 아무리 좋은 애플리케이션이라도 보안이 없다면 사용자의 민감한 데이터가 노출될 수 있으며, 이는 어떤 조직에게도 큰 문제가 될 수 있습니다. 따라서, 이번
OAuth는 Open Authorization의 약자로, IETF 표준에 기반을 둔 무료 오픈 소스 프로토콜입니다. 이 표준은 누구나 사용할 수 있도록 Open Web Foundation에서 라이선스를 제공합니다. 현재 OAuth 프레임워크의 버전은 OAuth2이며,
이번 강의에서는 OAuth2 프레임워크에서 자주 사용되는 몇 가지 용어(혹은 전문 용어)를 설명하겠습니다. 이러한 용어들은 OAuth2를 이해하고 설명하는 데 필수적이므로, 이를 잘 숙지하는 것이 중요합니다. 특히 면접에서 OAuth2를 기반으로 마이크로서비스 보안 구
이번 강의에서는 OpenID Connect가 무엇인지, 그리고 OAuth2 프레임워크와 어떤 관계가 있는지를 설명하겠습니다. 많은 개발자들이 OpenID Connect와 OAuth2를 혼동하거나 서로 대체할 수 있다고 생각하지만, 사실 이 둘은 서로 보완적인 관계에 있
이 강의에서는 OAuth2와 OpenID Connect 사양에 기반한 다양한 제품에 대해 살펴보겠습니다. 이전 강의에서 우리는 OAuth2와 OpenID Connect에 대해 간략히 다루었으며, 이들이 웹 애플리케이션의 보안을 구현하는 데 필요한 표준을 제공한다는 것을
이 강의에서는 OAuth2 프레임워크의 클라이언트 자격 증명 부여 유형(Client Credentials Grant Type)을 사용하여 게이트웨이 서버를 보안하는 방법에 대해 자세히 설명하겠습니다. 이 게이트웨이 서버는 마이크로서비스 네트워크의 엣지 서버(Edge S
이 강의에서는 Keycloak을 사용하여 OAuth2 프레임워크의 클라이언트 자격 증명 부여 유형을 이용해 게이트웨이 서버를 보안하는 과정을 설명하겠습니다. Keycloak는 오픈 소스 기반의 Identity and Access Management (IAM) 도구로,
이번 강의에서는 Keycloak 인증 서버에 외부 클라이언트 애플리케이션을 등록하는 과정을 다루겠습니다. 여기서 외부 클라이언트 애플리케이션은 우리 Easy Bank 마이크로서비스 네트워크와 통신하려는 애플리케이션을 의미합니다. 이 애플리케이션은 Keycloak 인증
이번 강의에서는 클라이언트 애플리케이션이 Keycloak 인증 서버에 연결하여 액세스 토큰을 얻는 방법을 설명하겠습니다. 이 액세스 토큰을 사용하여 리소스 서버인 게이트웨이 서버에 안전하게 접근할 수 있습니다.Keycloak에서 엔드포인트 URL 찾기:클라이언트 애플리
이 강의에서는 게이트웨이 서버를 OAuth2 클라이언트 자격 증명 방식(client credentials grant type flow)을 사용하여 리소스 서버로 변환하는 과정을 설명하겠습니다. 이미 클라이언트와 인증 서버 설정을 완료했으므로, 이제 남은 작업은 게이트웨
이 강의에서는 보안 관련 변경 사항을 테스트합니다. 이미 모든 애플리케이션을 실행한 상태에서, 우리가 설정한 보안 구성이 제대로 작동하는지 확인합니다.모든 애플리케이션 시작:Config 서버, Eureka 서버, Accounts, Loans, Cards 애플리케이션,
이 강의에서는 Gateway 서버에서 인증뿐만 아니라 권한 부여를 적용하는 방법에 대해 설명합니다. 현재는 클라이언트 애플리케이션이 인증되었는지만 확인하고 있지만, 특정 역할이나 권한을 가진 클라이언트만이 요청을 처리할 수 있도록 하고자 합니다.인증에서 권한 부여로 전
이번 강의에서는 Gateway 서버에서 OAuth2 및 Keycloak을 활용한 인증과 권한 부여 과정을 실습합니다. 이 과정을 통해 클라이언트 애플리케이션이 API 요청을 보낼 때 필요한 역할(Role)이 있는지 확인하고, 적절한 권한이 있는 경우에만 요청을 처리할
이번 강의에서는 OAuth2 프레임워크 내의 Authorization Code Grant Type Flow를 소개하고, 클라이언트 애플리케이션이 어떻게 인증 및 권한 부여를 통해 마이크로서비스와 통신할 수 있는지 살펴봅니다. 이 흐름은 특히 웹 애플리케이션이나 모바일
이번 강의에서는 Authorization Code Grant Flow를 구현하기 위해 Keycloak 인증 서버에 클라이언트와 사용자 정보를 설정하는 방법을 살펴보겠습니다. 이 설정은 Easy Bank 마이크로서비스 네트워크에서 인증 흐름을 구현하는 데 필수적입니다.이
이번 강의에서는 Authorization Code Grant Flow를 사용하여 Gateway 서버 뒤에 있는 보안 리소스에 접근하는 방법을 살펴보겠습니다. Postman을 활용해 UI 애플리케이션이나 모바일 애플리케이션의 시나리오를 모방할 수 있습니다. 다음은 이 과
이번 강의에서는 Docker Containers와 Docker Compose를 사용하여 보안 관련 변경 사항을 테스트하는 방법을 살펴보겠습니다. 이 과정을 통해 마이크로서비스 네트워크에서 내부 서비스가 외부에 직접 노출되지 않도록 보호하고, 모든 클라이언트 애플리케이션
이번 도전 과제는 이벤트 기반 마이크로서비스(Event-Driven Microservices)를 구축하는 것입니다. 이벤트 기반 마이크로서비스란 무엇이며, 왜 이러한 방식을 채택해야 하는지에 대해 자세히 알아보겠습니다.느슨한 커플링: 애플리케이션의 비즈니스 로직을 개별
현재 계정(accounts), 카드(cards), 대출(loans) 마이크로서비스 간의 통신은 동기식 통신을 기반으로 이루어지고 있습니다. 이러한 동기식 통신은 사용자에게 즉각적인 응답을 제공해야 하는 중요한 비즈니스 로직에서 필수적입니다. 예를 들어, 사용자가 계좌를
이 섹션에서는 이벤트 브로커를 활용하여 accounts 마이크로서비스와 message 마이크로서비스 간의 비동기 통신을 구현할 예정입니다. 이를 위해 RabbitMQ를 사용할 것이며, RabbitMQ는 오픈 소스 메시지 브로커로서 많은 기업에서 널리 사용되고 있습니다.
이번 강의에서는 RabbitMQ를 활용하여 비동기 통신을 구현하기 위한 첫 번째 단계로 메시지 마이크로서비스(Message Microservice)를 생성하는 방법을 설명하겠습니다. 이 메시지 마이크로서비스는 메시지 브로커로부터 메시지를 수신하고, SMS나 이메일을 통
이번 강의에서는 Spring Cloud Function을 활용하여 메시지 마이크로서비스(Message Microservice)의 기본 프로젝트를 생성하는 과정을 다루겠습니다. 이 마이크로서비스는 메시지 브로커로부터 메시지를 수신하고, 사용자에게 SMS나 이메일을 통해
이번 강의에서는 함수형 인터페이스를 사용하여 비즈니스 로직을 정의하는 방법에 대해 다룹니다. 이 과정에서는 Function 인터페이스를 활용하여 이메일 및 SMS를 보내는 로직을 구현합니다. 각 함수는 Spring Cloud Function에서 자동으로 관리되고, 비즈
이번 강의에서는 Spring Cloud Functions의 강력한 기능을 활용하여 비즈니스 로직을 구현하고, 이를 REST API로 쉽게 변환하는 방법에 대해 설명합니다. 이 과정을 통해 왜 Spring Cloud Functions를 사용해야 하는지, 그리고 함수형
이번 강의에서는 Spring Cloud Stream이 무엇인지, 그리고 이를 통해 마이크로서비스에서 이벤트 중심의 비동기 통신을 구현하는 방법에 대해 자세히 설명합니다.Spring Cloud Stream은 확장 가능한 이벤트 중심 애플리케이션과 스트리밍 애플리케이션을
이번 강의에서는 Spring Cloud Stream을 활용하여 마이크로서비스 간의 비동기 통신을 구현하는 방법을 다룹니다. 이 과정을 통해 메시지 마이크로서비스와 RabbitMQ를 연동하여 이벤트 기반 통신을 설정할 것입니다.먼저, 메시지 마이크로서비스에 Spring
이번 강의에서는 RabbitMQ를 활용하여 Accounts 마이크로서비스가 Message 마이크로서비스로 이벤트를 트리거하는 비동기 통신을 데모로 보여줍니다. 이 과정을 통해 RabbitMQ가 어떻게 마이크로서비스 간의 중개자 역할을 수행하는지 확인할 수 있습니다.Ra
이번 강의에서는 이전에 구현한 비동기 이벤트 스트리밍을 확장하여 Message 마이크로서비스에서 Accounts 마이크로서비스로 이벤트를 다시 전송하는 과정을 설명합니다. 이 과정은 전체 비즈니스 흐름을 완성하기 위한 중요한 단계입니다.Output Binding 추가:
이번 강의에서는 RabbitMQ를 이용해 Accounts 마이크로서비스와 Message 마이크로서비스 간의 비동기 통신이 제대로 이루어지는지에 대한 전체 데모를 시연했습니다. 이 과정을 통해 두 마이크로서비스 간의 이벤트 스트리밍을 확인하였으며, 모든 비즈니스 흐름이
이번 강의에서는 Docker 환경에서 RabbitMQ를 활용한 이벤트 주도 마이크로서비스의 변경 사항을 테스트 합니다. 이 과정에서 Accounts와 Message 마이크로서비스를 Docker 환경에서 설정하고, RabbitMQ를 통해 이벤트가 올바르게 전달되고 처리되
이전 섹션에서는 RabbitMQ 메시지 브로커를 사용하여 마이크로서비스 간 비동기 통신을 구축하는 방법을 논의했습니다. 이번 섹션에서는 Apache Kafka를 활용한 비동기 통신 및 이벤트 주도 통신을 구현하는 방법에 대해 다룰 것입니다. 우선, Kafka와 Rabb
이 강의에서는 Apache Kafka에 대한 간단한 소개와 함께 그 작동 원리를 설명합니다. 먼저, Apache Kafka를 이해하기 위해 일상 생활에서 비슷한 예를 들어보겠습니다.미디어 수신기를 통해 DVD, 블루레이, CD 또는 USB에 저장된 데이터를 텔레비전과
이번 강의에서는 프로듀서가 Kafka 서버로 메시지를 보내는 과정과 컨슈머가 Kafka 서버로부터 메시지를 읽어들이는 과정을 자세히 설명하겠습니다.프로듀서 설정:먼저, 애플리케이션 내에서 프로듀서를 설정해야 합니다. 이 과정에서는 Kafka 브로커의 엔드포인트 URL,
Apache Kafka를 마이크로서비스에서 활용하기 위해서는 먼저 로컬 시스템에 Apache Kafka를 설치하고 설정해야 합니다. 아래는 각 단계에 대한 상세한 설명과 참고 자료입니다.Apache Kafka 공식 웹사이트 방문:Apache Kafka 공식 웹사이트에
Apache Kafka를 사용하여 마이크로서비스 간 비동기 통신을 구현하기 위해서는 계정(Account) 및 메시지(Message) 마이크로서비스 코드를 수정해야 합니다. 다음은 각 단계별로 코드 변경 및 설정 방법을 정리한 내용입니다.새 폴더 생성:섹션 14에서 작업
Docker 이미지 생성: 모든 애플리케이션(총 7개)의 Docker 이미지를 S14 태그로 생성했습니다.Docker Hub에 푸시: 생성된 이미지를 Docker Hub에 푸시했습니다. Docker Hub에서 S14 태그를 확인할 수 있습니다.RabbitMQ 제거 및
음악 오케스트레이션의 비유: 오케스트라에서 여러 연주자가 동시에 연주할 때, 지휘자인 콘덕터가 음악의 흐름을 제어합니다. 누가 연주를 시작하고 멈출지, 언제 연주할지를 지시합니다.컨테이너 오케스트레이션: 마찬가지로, 여러 마이크로서비스 컨테이너가 동시에 실행될 때, 이
Kubernetes의 정의: Kubernetes는 컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 시스템입니다. 현재 시장에서 가장 유명한 오케스트레이션 플랫폼입니다.클라우드 중립성: Kubernetes는 특정 클라우드 서비스에 종속되지 않으며,
Kubernetes는 컨테이너화된 애플리케이션을 자동으로 배포, 확장, 관리할 수 있는 강력한 오픈 소스 플랫폼입니다. Kubernetes 클러스터는 여러 서버 또는 가상 머신이 함께 작동하여 사용자가 원하는 결과를 제공하는 환경입니다. Kubernetes의 핵심 구
목표: 로컬 시스템에 Kubernetes 클러스터를 설정하여, 모든 마이크로서비스를 배포하고 Kubernetes의 주요 개념을 학습합니다.로컬 설정 이유: 클라우드 환경에서 학습할 경우 비용이 발생할 수 있으므로, 먼저 로컬 환경에서 학습한 후 클라우드 환경으로 이동합
목적: Kubernetes 클러스터를 더 쉽게 관리하기 위해 Kubernetes Dashboard (관리 UI)를 설정하고 사용하는 방법을 학습합니다.Kubernetes Dashboard: Kubernetes 클러스터를 시각적으로 관리하고 모니터링할 수 있는 웹 기반
목적: 로컬 Kubernetes 클러스터에서 Config Server 마이크로서비스를 배포하고 이를 외부에 노출하는 방법을 학습합니다.필요성: Kubernetes 클러스터에 마이크로서비스를 배포하려면 Kubernetes가 이해할 수 있는 형식의 Yaml 구성 파일이 필
이전 강의에서는 Config Server를 Kubernetes 클러스터에 배포하기 위한 Kubernetes 매니페스트 파일을 준비했습니다. 이번 강의에서는 해당 매니페스트 파일을 사용하여 Config Server를 실제로 Kubernetes 클러스터에 배포하고, 배포
이전 강의에서는 Config Server를 Kubernetes 클러스터에 배포하기 위한 Kubernetes 매니페스트 파일을 준비했습니다. 이번 강의에서는 해당 매니페스트 파일을 사용하여 Config Server를 실제로 Kubernetes 클러스터에 배포하고, 배포
이번 강의에서는 Helm을 설치하는 방법에 대해 자세히 알아보겠습니다. Helm은 Kubernetes의 패키지 관리자로, Helm을 통해 Kubernetes 클러스터에서 애플리케이션을 더욱 효율적으로 관리할 수 있습니다. 아래에서 Helm 설치를 위한 과정별로 정리해
이번 강의에서는 Helm의 강력함을 보여주는 데모를 통해 Helm Chart를 사용하여 Kubernetes 클러스터에 애플리케이션을 설치하는 방법을 알아보겠습니다. Helm은 Kubernetes를 위한 패키지 관리자이며, 이를 통해 복잡한 Kubernetes 리소스 설
이번 강의에서는 Helm Chart의 구조와 이를 활용한 Kubernetes 리소스 관리 방법에 대해 알아보겠습니다. Helm Chart는 Kubernetes 애플리케이션의 배포를 위한 패키지로, 표준화된 디렉토리 구조와 파일들로 구성됩니다.Helm Chart는 몇 가
이 강의에서는 Helm Chart를 활용하여 마이크로서비스를 Kubernetes 클러스터에 배포하는 방법을 알아보겠습니다. 기존에 WordPress Helm Chart를 설치했지만, 실제 프로젝트에서는 조직의 마이크로서비스 요구사항에 맞는 Helm Chart를 직접 작
이 강의에서는 Helm Chart를 활용하여 마이크로서비스를 Kubernetes 클러스터에 배포하는 방법을 알아보겠습니다. 기존에 WordPress Helm Chart를 설치했지만, 실제 프로젝트에서는 조직의 마이크로서비스 요구사항에 맞는 Helm Chart를 직접 작
이번 강의에서는 easybank-common Helm Chart를 활용하여 accounts 마이크로서비스의 Helm Chart를 작성하는 방법을 다룹니다. 이를 통해 Helm Chart를 사용해 마이크로서비스를 Kubernetes 클러스터에 배포하는 과정을 쉽게 관리할
이번 강의에서는 Helm을 사용하여 Kubernetes 클러스터에서 마이크로서비스 배포를 업데이트하고 롤백하는 방법에 대해 알아봅니다. 이를 통해 새로운 변경 사항을 적용하거나 배포 설정을 업데이트할 수 있습니다.Helm 차트 수정:environments/prod-en
이번 강의에서는 Helm을 사용하여 Kubernetes 클러스터 내의 마이크로서비스를 이전 버전으로 롤백하는 방법에 대해 설명합니다. Helm의 롤백 기능은 단일 명령으로 클러스터의 모든 관련 구성 요소를 이전의 원하는 상태로 되돌릴 수 있어, 여러 마이크로서비스에 변
이번 강의에서는 Helm을 사용하여 Kubernetes 클러스터 내의 마이크로서비스를 이전 버전으로 롤백하는 방법에 대해 설명합니다. Helm의 롤백 기능은 단일 명령으로 클러스터의 모든 관련 구성 요소를 이전의 원하는 상태로 되돌릴 수 있어, 여러 마이크로서비스에 변
이번 강의에서는 Helm Uninstall 명령어를 사용하여 Kubernetes 클러스터에서 마이크로서비스를 모두 삭제하는 방법을 설명합니다. 이는 특히 개발, 테스트 환경과 같이 낮은 환경에서 클러스터를 종료할 때 매우 유용합니다. 또한 Helm을 사용하여 마이크로서
이번 강의에서는 지금까지 다룬 Helm 명령어들을 빠르게 복습하고, 각 명령어의 사용 목적과 방법을 정리해 보겠습니다.설명: 새로운 Helm 차트를 생성하는 명령어입니다. 이 명령어를 사용하면 기본적인 디렉터리 구조와 파일들이 포함된 빈 차트를 생성할 수 있습니다.구조
이번 강의에서는 마이크로서비스 네트워크에서 서버 측 서비스 발견과 로드 밸런싱의 개념을 깊이 있게 다룹니다. 이를 통해 Eureka 서버를 대체하고, 개발자의 부담을 줄이는 방법을 알아보겠습니다. 주요 개념과 과정을 단계별로 정리해보겠습니다.개요: 마이크로서비스 네트워
이번 강의에서는 Kubernetes 클러스터 내에서 서버 측 서비스 발견과 로드 밸런싱을 설정하는 방법을 다룹니다. 이를 위해 Spring Cloud Kubernetes 프로젝트를 활용하며, Discovery Server를 설정하는 과정에 대해 설명합니다.Spring
이번 강의에서는 Kubernetes 클러스터 내에 Discovery Server를 설정하는 방법에 대해 알아보겠습니다. 이를 위해 준비된 Kubernetes 매니페스트 파일을 사용하여 Discovery Server를 설정하고, 이후 필요한 코드 변경 작업을 수행할 것입
이번 강의에서는 Kubernetes 클러스터 내에서 Eureka 서버를 제거하고, 대신 Discovery 서버를 사용하기 위해 필요한 모든 마이크로서비스 코드를 수정하겠습니다. 아래는 각 단계별로 자세히 설명된 변경 사항입니다.pom.xml 수정:Spring Cloud
이번 강의에서는 Kubernetes Discovery Server와의 통합을 위해 Gateway Server 프로젝트를 수정하겠습니다. 다음은 단계별로 변경해야 할 사항들입니다.Eureka 의존성 제거:Spring Cloud starter Netflix Eureka C