전체 글 (113) 썸네일형 리스트형 Spring Cloud Gateway, Eureka 사용해보기 Eureka란? Neflix에서 제공하는 MSA를 위한 클라우드 오픈 소스입니다. 정의는 LB 와 Middle-tier server에 에러 대응을 위한 REST 기반 서비스입니다. Eureka를 왜 쓸까? LB는 MSA의 각 모듈에 대한 연결 정보(ip,host,hostname)을 알고 있어야한다. 그리고 각 모듈의 연결정보를 LB에 등록을 해야 한다. CI/CD를 수행하게 되면서 모듈이 업데이트가 되고, 수정되며 그 과정을 통해 연결정보가 바뀌게 된다. 그럴때마다 연결정보를 찾아서, 다시 연결정보를 업데이트해주고 하기가 너무나 번거롭다. 그래서 나온게 Eureka이다. Eureka는 LB에 연결 정보 등록을 유연하게 처리해준다. 등록과 해지를 곧바로 적용할 수 있게 해준다. 사용해보자 준비물 ● mod.. 마이크로서비스 아키텍처에서 RabbitMQ를 활용한 내부 통신: 메일 및 SMS 서비스 구현 사례 마이그레이션 전 소스코드 ※실제 코드는 아니지만, 구조는 동일했습니다. @Service @RequiredArgsConstructor public class SignUpService { private final NotiService notiService; public void signUp() { //회원가입 로직 ... ... //노티전송 로직 ... ... } } 위에 코드에서 signUp() 안의 내용을 들여다 보면 1)회원가입 2)노티전송 두가지 역할을 하고있습니다. 한 서비스에 여러 로직이 함께 있는 경우 몇 가지 단점이 있습니다. ● 단일 책임 원칙 위반: 각 서비스는 특정 기능 또는 역할을 담당해야 한다는 원칙입니다. ● 유연성 감소 : 서비스가 다양한 역할을 수행하면 변경이 발생했을 때 다른 .. Springboot + RabbitMQ DLX 사용하기 DLX 란? Dead Letter Exchange 의 줄인말임. 메세지큐는 큐안에 메세지가 들어있을때 무조건 소비를 해줘야한다. 어떠한 이유로 메세지가 소비가 안되고 계속 남아있을때, 무한히 요청을 한다. 무한히 요청이 되면, 과부하로 인해 메세지큐서버가 다운될 수 있다. 그걸 방지하기위해 메세지 소비가 안될 상황에 흔히 부르는 DLX 큐를 생성해 메세지를 옮겨주는 장소이다. 즉. 메세지소비 시 오류가 생겼을때, 임시로 대피시켜주는 장소라고 보면 된다. 바로 사용해보자 local에 rabbitmq를 띄어 놓기 (도커) docker run -d --name rabbitmq -p 5672:5672 -p 15672:15672 --restart=unless-stopped -e RABBITMQ_DEFAULT_US.. git convention git도 convention을 지켜야한다. 블로그를 보다가, 글이 잘 정리된 블로그가 있어 기록 해놓으려고 한다. https://velog.io/@msung99/Git-Commit-Message-Convension ubuntu 20.04 next.js 배포 시 오류 사건 ubuntu 20.04 버전에 next.js 를 배포 하려 했다. 근데 왠걸 빌드에서 오류가 자꾸만 났다. 오류내용 /home/ubuntu/TwitterClone-FS-/front/node_modules/next/dist/lib/picocolors.js:134 const { env, stdout } = ((_globalThis = globalThis) == null ? void 0 : _globalThis.process) ?? {}; ^ SyntaxError: Unexpected token '?' at wrapSafe (internal/modules/cjs/loader.js:915:16) at Module._compile (internal/modules/cjs/loader.js:963:27) at .. springboot yml 환경 분리하기 왜 yml를 환경분리 해야할까? 실제 배포를 하기위해 프로젝트를 만든다면 개발서버와, 운영서버를 꼭! 분리해야함. 운영서버에 있는 데이터들은, 실제로 사용자들이 서비스를 이용하고 있는 데이터일텐데 그곳에 테스트를 한다고 test1, test2, test3 이런 더미데이터들이 들어있으면 참으로 난처함. 또 개발서버와 운영서버의 설정이 다를 수가 있는데, 분리하지않으면 개발서버에서 되던 설정이 운영서버에는 안먹힘. 그래서 꼭 분리해야됌. 두 가지 방법이 있다. 1. application.yml을 나누는 방식 개발 환경(로컬)에서는 application-local.yml 에다가 설정값을 적으면 됌. 운영 환경에서는 application-prod.yml 에다가 설정값을 적으면 됌. Active profiles .. p6spy를 활용하여 JPA 쿼리로그 value 보기 JPA를 사용하다보면 show_sql, format_sql 옵션으로 쿼리 로그를 남기곤 함.. 근데 왠걸 value에 어떠한 값이 들어있는지 확인할 수가 없음. 이런 느낌으로 물음표로 대체됌. 이렇게 되면 로그 보는 의미가 없으니, 물음표말고 내가 무슨 값을 넣었는지 확인할 수 있게 해주겠음. 우선 의존성 주입 ㄱㄱ implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' 사실 이것만 해줘도 쿼리에 제대로 값이 찍혀나온다.. 근데 너무 안이쁘니 포맷팅을 해주자 @Component public class MultiLineFormat extends JdbcEventListener implements MessageFormattingSt.. @JsonProperty 사용이유? 사용법 어떤 회사의 과제시험을 보는중이였다. 거기서 요구하는 조건에 맞게 API를 개발해야하는 상태.. { "한국어":"korea", "영어":"englisth", "언어":"lang" } 이 JSON을 가지고 요청을 해야함. 근데 왠걸 키 값이 한글로 되어있음...... 자바에는 변수명을 한글로도 표기가 가능해서, 그렇게 개발해도 상관은 없다. private String 한국어; private String 영어; private String 언어; 뭐 이런식으로 해도 정상작동은 한다. 근데 안이쁘잖아.... 우선 라이브러리 등록하자. gradle implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.14... 이전 1 2 3 4 5 ··· 15 다음