전체 글669 입사 0년차 주니어의 첫 운영 배포와 실수 경험 목차 개요 및 사건 요약 첫 번째 문제 두 번째 문제 세 번째 문제 결론 회고 및 제안 개요 및 사건 요약 한 서비스에 기능 고도화를 개발하고 배포한 일이 있었습니다. 서비스 배포 과정에서 발생한 에러에 대해 원인을 파악하고 해결한 경험을 기록하여 공유해보려고 합니다. 용어나 코드는 실제의 것으로 작성하지 않고 컨셉으로 대체하였습니다. 대상 서비스: 서비스A 배포 내용: 유니버설 템플릿 적용을 통한 주요 기능 변경 및 추가 로직 도입 일시: 최근 날짜 (예: 2023년 11월 8일 10:30부터 12:30까지) 발생한 문제: 실제 운영 환경에서의 스프링 부트 어플리케이션 실행 실패, 주요 API 기능 제공 불가 결론: 3가지 주요 실패 원인 분석 첫 번째 문제 첫 번째 시도에서 만난 에러 메시지는 다음과.. 2023. 12. 14. 로깅 추적을 위한 AOP 적용과 이후 성능 차이 그리고 why ?! 개요 사내에서 만든 서비스에 메서드 전후로 AOP를 걸고 쓰레드별로 추적하는 기능을 덧붙여서 사용해볼 기회가 있었다. 성능이 어떻게 달라질 것인지 궁금했다. 이 글은 AOP 적용 이전과 이후 성능 차이를 기록하고 이를 분석해본 글이다. 그리고 이 결과에 대한 피드백으로 들어온 어떤 질문에 대해 고민해 본 내용을 소개한다. 사용한 툴 장비: macbook pro 13` 2020 (m1), 16GB, Ventura 13.5 성능 측정: JMeter, Spring Actuator(Prometheus, Grafana) 개발: Mvc: Springboot 2.6.7, mysql 8.0 테스트의 특성상 많은 더미 데이터를 사용하지는 않았다. 목차 Log Trace AOP 적용 이전 1.1 단건 조회 1.2 검색 조.. 2023. 12. 14. 엔티티가 연장되는 속성을 가진 경우 효율적인 참조 관계 맺기 개요 댓글에 댓글처럼 어떤 엔티티가 줄을 타고 이어지는 경우가 있다. 사내에서 도메인 서비스를 개발하면서 비슷한 케이스가 있어서 고민해보았었다. 예시 서비스는 사용자에게 특정 기능의 연장 기능을 제공한다. 사용자는 해당 기능이 만료되기 일정 기간 전부터 연장을 신청할 수 있으며, 연장 신청 시 새로운 인스턴스가 생성된다. 이 과정에서 새 인스턴스와 이전 연장의 이력 관리가 중요하다. 따라서, 이 서비스에 대한 엔티티 설계에서 연장 이력의 연속성을 관리하는 방안에 대한 효율성을 탐구해야 한다. 사실 엄청 별거 아니지만 그때 고민한 내용과 생각해보았던 내용들을 간단하게 기록해보았다. 실제 용어와 코드는 컨셉으로 대체하였습니다. 목차 개요 현재 방식과 문제점 참조 관계를 개선하기 다른 방식은 없을까 결론 현재.. 2023. 12. 14. Webflux는 얼마나 빠를까? Spring Mvc Vs. Webflux 성능 비교 테스트 개요 및 설명 최근 개발한 한 도메인 서비스를 이용해 로컬 환경에서의 Webflux와 비교 테스트를 진행해보았다. 테스트 도구는 JMeter를 활용했다. Gatling이 기능이 더 많고 리포트 ui도 좋아서 사용하려고 했는데 Webflux 구현을 스프링부트 3.대와 jdk 17을 사용하였더니 지원을 하지 않아서 JMeter로 했다. Cpu 수치에 대해서는 Spring actuator에서 제공해주는 메트릭을 Prometheus와 Grafana를 이용해 모니터링했다. 테스트는 총 3가지 부하 환경을 구성하여 진행하였다. 노멀한 상황으로 유저 5명 상황 극단적 상황으로 동시 유저 200명 상황 초 극단적 상황으로 동시 유저 10,000명 상황. 테스트의 목적은 논블로킹과 비동기 환경을 제공하는 webflux가.. 2023. 12. 14. spring 단위 테스트에서 autowired와 mockbean의 차이 (feat. spybean) 단위 테스트를 작성하면서 쓰긴 쓰는데 한참 동안 차이점도 잘 모르고 썼던 것이 바로 @Autowired와 @Mockbean이었다. 둘의 차이점을 정리해보았다. 문제 파악하기 다음과 같은 코드에서 MockBean을 주입하는 것과 Autowired를 주입하는 것의 차이는 무엇일까? @ExtendWith(SpringExtension.class) @ContextConfiguration(classes = TestConfig.class) class GenericServiceFeignSenderTest { @Autowired private GenericServiceFeignSender genericServiceFeignSender; @MockBean private ExternalApiClientV1 externalA.. 2023. 12. 13. 이전 1 ··· 26 27 28 29 30 31 32 ··· 134 다음