분류 전체보기
-
SCS(Spring Cloud Stream) 뽀개기2카테고리 없음 2024. 6. 5. 23:21
들어가며저번(https://baby-care-dev.tistory.com/69)에 간단한 Spring Cloud Stream(줄여서 SCS) 기반 애플리케이션을 만들어 보았다. 이번에는 SCS 전반적인 내용에 대해 살펴보자. 스프링 공식 문서(https://docs.spring.io/spring-cloud-stream/docs/current/reference/html/spring-cloud-stream.html#spring-cloud-stream-reference)를 참조하였다.프로그래밍 모델아래 그림이 SCS를 가장 간단하고 알기 쉽게 표현해준다고 생각한다. SCS의 핵심 기능은 메세지 브로커와의 연결을 추상화하여 비즈니스 로직에 집중할 수 있는 모델을 제공하는 것이다. JDBC나 JPA처럼 외부 시스..
-
SCS(Spring Cloud Stream) 뽀개기2 - 스프링 가이드 무작정 따라하기책책책 책을 읽읍시다/프로그래밍 2024. 5. 27. 23:52
들어가며 우리 팀에서 각 MSA간 REST API 콜로 강결합되어 있던 코드들을 이벤트 드리븐 방식으로 하나씩 떼어내는 작업을 했다. 이 중 가장 큰 문제는 failover 처리가 전혀되어 있지 않다는 점이다. 아직 베타 단계라 트래픽이 적어서 드러나는 문제는 없지만 잠재적으로 이슈들이 터져나올 딱 좋은 환경이다. 프로젝트 완성도가 높지 않다는 변명만 해대고 있는 중이다 ㅠㅠ 아무튼 그래서 최소한의 에러 처리는 해두기로 했다. 가장 쉬운 방법은 전 회사에서 처럼 컨슈머(kafka) 빈마다 try-catch로 감싸는 것이다. 여기에는 2가지 문제가 있다. 첫째, 컨슈머가 10개쯤은 되는데 다 try-catch로 감싸기 껄끄럽다. 센트리(Sentry)에도 알람을 보내야되고 ES 로그로 수집되게 로깅 작업도 ..
-
부하 테스트 - K6, Grafana, InfluxDB카테고리 없음 2024. 2. 18. 14:53
들어가며 저번 글 3개에서 간단한 REST API를 만들어 Docker로 컨테이너화 하고 Spring Actuator, Prometheus, Grafana로 모니터링 시스템 구축까지 해보았다. 그럼 이제 부하 테스트를 진행하여 어느 수준의 트래픽까지 받을 수 있을지 가늠해볼 수 있다. 3개 작업만 하면 된다. K6로 테스트 스크립트 작성하고, 부하테스트에 따른 지표 데이터를 수집하고, 이 지표를 Grafana로 확인할 수 있게 대시보드를 구성하는 것이다. 아래 그림과 같은 구조로, Grafana 블로그(https://grafana.com/blog/2023/04/11/how-to-visualize-load-testing-results/)에 잘 설명되어 있다. K6 설치하고 스크립트 만들기 K6가 뭔지부터 ..
-
모니터링 체계 구축 - Spring Actuator, Prometheus, Grafana개발 나누고 더하기/자바, 스프링 2024. 2. 15. 22:50
들어가며 이전 글에서 간단한 스프링부트 애플리케이션을 만들어 보고(https://baby-care-dev.tistory.com/65), 이걸 도커 이미지로 만드는 템플릿까지 작성(https://baby-care-dev.tistory.com/66)해 보았다. 이제 부하 테스트 시 지표를 분석(시각화)하는 틀만 만들면 된다. 사실 jMeter나 nGrinder 같은 도구를 사용하면 관련 지표를 시각화해서 보여주긴 하지만, 운영 환경에서와 동일한 지표를 보고 싶기 때문에 운영 환경과 동일한 모니터링 체계를 로컬에 구축하려는 것이다. 우리 회사에서는 Spring Actuator, Prometheus, Grafana로 모니터링하므로 똑같이 구성해주면 된다. 그럼 부하 테스트를 통해 나온 지표를 참고하여 트래픽이 ..
-
스프링 가이드 - docker build책책책 책을 읽읍시다/프로그래밍 2024. 2. 14. 22:51
들어가며 저번 글(https://baby-care-dev.tistory.com/65)에서는 간단한 RESTful API를 만들어보았다. 이번엔 이 프로젝트를 docker 이미지로 빌드해서 코드와 환경설정 등을 다른 사람들도 그대로 가져다 쓸 수 있게 해보자. 그래야 같은 설정으로 각기 다른 엔드포인트들을 테스트해볼 수 있으니까 말이다. 준비물 실행할 스프링부트 application 도커 엔진 : 편하게 Docker Desktop 스프링 가이드 : https://spring.io/guides/topicals/spring-boot-docker#a-better-dockerfile Dockerfile 이란? 이미지를 빌드하는 스크립트라고 보면 된다. 크게 아래와 같은 내용을 기술하며 자세한 내용은 공식 가이드(..
-
스프링 가이드 - 간단한 RESTful API 만들어보기개발 나누고 더하기/자바, 스프링 2024. 2. 13. 11:38
들어가며 토비의 스프링 유튜브 채널(https://www.youtube.com/watch?v=wlOR5ehWSjE&list=PLv-xDnFD-nnnZUzISvE6a8JnKZme-tRGU&index=2)에서 스프링 가이드를 따라하며 15분 만에 API만드는 예제가 있어 나도 따라해보았다. 다른 목적도 하나 있는데, 부하 테스트용 샘플 API가 필요했다. 새로 입사한 회사에서 백엔드팀 전체 부하테스트를 했었다. 환경 설정에 힘들어하는 주니어들도 있고 일관된 테스트 환경과 지표 분석을 위해 애플리케이션과 그라파나를 도커로 구성하는게 좋을 것 같았다. 일단 집에서 도커 테스트 환경을 만들고 회사 프로젝트에 적용할 계획이다. 준비물 IDE와 JDK - 여기선 IntelliJ Community Edtion과 자바..
-
개발자의 글쓰기 - 릴리스 노트, 장애 보고서책책책 책을 읽읍시다/프로그래밍 2023. 8. 11. 22:25
고객에게 유용한 정보를 쓰자 개발자 관점과 고객 관점 체인지 로그는 개발자가 변경한 내용을 적은 것이다. 하지만 체인지 로그를 보는 독자는 뭔가 새로운 것, 바뀐 것, 그래서 자기에게 좋거나 유익하거나 어떤 행동을 해야 할지 명확하게 지시하는 것을 보고 싶어 한다. 체인지 로그를 사내 개발자끼리만 본다면 한 일만 담백하게 적어도 상관없다. 하지만 외부 개발자나 일반 사용자가 보는 체인지 로그를 쓸 때는 개발자 관점이 아니라 고객 관점에서 써야 한다. 고객 관점으로 쓰려면 변경사항이 고객에게 끼치는 영향을 체인지 로그에 추가해서 기술하면 된다. 예를 들어 다음과 같이 개발자가 문제를 해결한 내용만 기술한 체인지 로그가 있다고 하자. 댓글에서 애니메이션 스티커 때문에 화면이 멈추는 문제를 해결했습니다. 이것..
-
개발자의 글쓰기 - 에러 메시지책책책 책을 읽읍시다/프로그래밍 2023. 8. 11. 21:39
에러 메시지의 목적은 사용자에게 에러가 났음을 알려주는 것이 아니라 사용자 스스로 에러를 해결하게 하는 것이다. 따라서 사용자 에러 메시지에는 에러의 내용, 에러의 원인, 에러 해결 방법이 포한돼야 한다. 에러 내용 : 오류로 인한 문제와 종류 에러의 원인 : 오류를 발생시킨 직접적이고 근본적인 원인 에러 해결 방법 : 사용자가 오류를 해결할 가장 쉽고 빠른 방법 회원 가입 중 휴대전화 번호를 01012345678 형식으로 입력해야되는데, 010-1234-5678로 잘못 입력한 경우에 위 규칙을 적용해보자. [에러 내용] 회원가입을 진행할 수 없습니다. [에러 원인] 휴대전화 번호를 잘못 입력하셨습니다. [에러 해결 방법] 휴대전화 번호 입력란에는 숫자만 입력하십시오. 에러 메시지를 보여주는 순서 에러 ..