서울우유와 함께 한 기업프로젝트가 끝났다.구현이 끝났으니, 성능을 측정해보고 개선을 해보자!개선을 해볼 API는 공지사항 조회이다.아무래도 모든 유저가 접근할 수 있는 API이기도 하고, 읽기 작업이 주를 이루는 API이므로 선택했다.성능 비교성능을 개선하기 전에 어떤 지점에서 조회 성능이 떨어지는지를 확인해보자! 서울우유 측에서 받은 정보이다.관련 업무를 처리하는 인원이 50명이므로, 테스트 시 인원 수 Max를 50으로 맞췄다.1 페이지에만 접근하기 모든 유저가 공지사항 페이지에 접근하면 첫 번째 페이지로 접근한다.page == 1 인 API에 대해 성능을 체크해보자.request 성공 여부 고려 11000 건 데이터 1000000건 데이터((백만건) 10000000건 데이터 (천만건) reques..
이 글을 쓰게 된 계기큐시즘 31기 기업프로젝트에서 서울우유의 업무 프로세스 개선 프로젝트를 하게되었다.우리가 개선하고 한 프로세스에 대해 간단히 소개하면...기존 업무 프로세스 서울우유의 대리점은 마트, 슈퍼에 납품을 한다.본사에서는 판매량 증가를 통한 이윤 상승을 위해→ 대리점이 저렴하게 납품을 하도록 한다. (할인해서 납품)이후 대리점은 납품한 내역(세금계산서)을 본사에 제출한다.본사는 국세청 홈택스 사이트에서 세금계산서의 *진위여부를 확인한다.맞다면, 지급결의서를 작성한다.이후 본사에서는 지급결의서의 내용대로 대리점에게 금액을 지급한다.그런데 이 과정을 직원들이 수기로 하고 있었다. 대리점에서 전달받은 세금계산서를 서울우유 지점 엄부 담당자가 국세청 홈택스 사이트에서 진위여부를 확인한다. (진위여..
최근 Kotlin과 SpringBoot, MSA를 활용한 프로젝트를 진행하고 있다.MSA는 장점이 많은 아키텍쳐이지만, 해결해야 할 문제도 있다. 그 중 이번 글에선 장애 전파를 막는 방법, 그 중에서도 서킷 브레이커에 대한 실습을 정리해본다. (코드는 https://github.com/HoyeongJeon/spring-circuit 에서 볼 수 있다.)개념 정리1. 장애 전파를 막는 것이 왜 중요할까?MSA 환경에선 각 서비스가 독립적으로 운영된다. 그러다 보니 다른 서비스에 필요한 데이터가 있을 경우, 요청을 보내 데이터를 얻어온다.여기서 문제는 다른 서비스에 장애가 생겼을 경우다. 이런 경우, 정상 서비스는 지속적인 에러 응답을 받게 된다. 이러면, B 서비스에서 발생한 장애가 A 서비스에도 전파 ..
(이 글을 적는 가장 큰 목적은 여러 상황(JPA, JPQL, Nativa Query, @Transactional 의 조합) 에서 쿼리가 어떻게 날아가는지 보는 것이기에, 영속성 컨텍스트에 대한 자세한 설명은 하지 않을 예정입니다.) JPA를 배우면 영속성 컨텍스트에 대해 배우게 된다.영속성 컨텍스트에 대해 간단히 설명하면 , "애플리케이션과 DB 사이에 영속화된 엔티티를 관리하는 논리적 공간" 으로 정의할 수 있다.영속화란 엔티티를 영속성 컨텍스트가 관리할 수 있게 만드는 것이다. 영속성 컨텍스트에 대해 간단히 알아보자.영속성 컨텍스트에 대한 간단한 공부영속성 컨텍스트는 DB로의 접근을 최소화고, 동일한 엔티티의 동등성을 보장하기 위해 다음 4가지 기능을 제공한다. 1. 1차 캐시개발자가 DB에 특정 ..
JPA의 쿼리가 어떻게 날아가는지 여러 방면으로 공부하다 save() 동작에 대한 의문이 생겼다.그래서 깊게 알아보려 한다.( 전체 코드 👉🏻 https://github.com/HoyeongJeon/blog-code/tree/main/howsavework )고민의 시작 public void testNoneAnnotation() { System.out.println("// JPA만 사용하기(@Transactional 이 없는 경우)"); Member member = memberRepository.findById(1L).get(); member.setAge(35); memberRepository.save(member); S..