본문 바로가기

분류 전체보기118

Springboot 마이크로서비스 기본 개발 마이크로서비스를 구축함에 있어 개발자의 우선 고려 사항을 살펴본다. 서비스 엔드포인트를 노출하도록 엔드포인트 매핑용 스프링 부트 컨트롤러 클래스 구현타 언어 메시지를 적용할 수 있는 국제화 구현사용자가 서버와 상호 적용할 수 있도록 충분한 정보를 제공하는 스프링 HATEOAS 구현 마이크로서비스 출입구 만들기:스프링 부트 컨트롤러왜 마이크로서비스에 JSON을 사용하는가?여러 프로토콜을 사용하여 HTTP 기반 마이크로서비스 간 데이터를 통신할 수 있지만 JSON은 다음 몇 가지의 이유로 사실상 표준이 되었다. JSON은 가볍고 텍스토로 데이터 표현이 가능하다. 또한, 쉽게 읽고 사용할 수 있다.JSON은 자바스크립트에 사용되는 기본 직렬화 프로토콜이다. 프로그래밍 언어로 자바스크립트가 급격하게 성장하고 자.. 2024. 10. 17.
o.apache.kafka.clients.NetworkClient-1145 - [Consumer clientId=consumer-comnKeywordGroup-1, groupId=comnKeywordGroup] Error while fetching metadata with correlation id 157 : {comnKeyword-updates=LEADER_NOT_AVAILABLE} springboot 카프카 적용시 아래와 같은 에러를 만났다. o.apache.kafka.clients.NetworkClient-1145 - [Consumer clientId=consumer-comnKeywordGroup-1, groupId=comnKeywordGroup] Error while fetching metadata with correlation id 157 : {comnKeyword-updates=LEADER_NOT_AVAILABLE} 해당 에러는 카프카에 토픽이 등록 안된 상태이므로 토픽을 등록해주고 재시작 하면 된다. [Consumer clientId=consumer-comnKeywordGroup-1, groupId=comnKeywordGroup] Error while fetching me.. 2024. 10. 16.
Springboot + Redis + Kafka 설치부터 설정, 실행 과정 최근 수정이 적고 반복적으로 질의 되는 DB 데이터를 Cache할 일이 생겼습니다. 어떤 방식으로 할까 고민하다. 최근 많이 사용되는 Redis Cache, Kafka 방식을 선택하였고 그 과정을 간단하게 기록으로 남깁니다. 애플리케이션이 A, B 두개가 있다고 가정하고 B에서는 API를 통해 반복적으로 조회가 일어납니다. 반복적인 질의는 불필요하므로 캐시를 적용합니다. 이때, A서버에서 데이터의 저장, 수정, 삭제 등과 같은 트랜잭션이 일어나게 되면 Kafka를 통해 B 서버로 변경을 알리게 됩니다. B서버는 이를 감지하고 Redis 캐시를 무효화 하고 새롭게 데이터를 Redis Cache에 적재합니다. Redis 설정Redis 설치Redis는 메모리 내 데이터 구조 저장소로, 캐시, 데이터베이스, 메.. 2024. 10. 16.
마이크로서비시 아키텍처 설계 소프트웨어 프로젝트에서 아키텍트의 역할은 해결해야 할 문제의 작동 모델(working model)을 제공하는 것이다. 아키텍트는 애플리케이션의 각 부분이 잘 조립될 수 있도록 개발자가 작성할 코드에 대한 뼈대를 제공한다. 마이크로서비스를 구축할 때 프로젝트의 아키텍트는 다음 세 가지 업무에 집중한다. 비즈니스 문제 분해서비스 세분화 확정서비스 인터페이스 정의 1. 비즈니스 문제 분해복잠함에 직면하면 대부분은 작업 중인 문제를 관리 가능한 덩어리로 쪼개려고 한다. 이렇게 하면 문제의 모든 세부 내용을 기억하지 않아도 되기 때문이다. 그들은 문제를 몇몇 필수적인 부분으로 나눈 후 이들 부분 사이에 존재하는 관계를 찾으려고 한다. 마이크로서비스 아키텍처에서도 이 과정은 매우 유사하다. 아키텍트는 비즈니스 문제.. 2024. 10. 14.