BackEnd(Java)
-
slack webhook을 통한 운영 이슈 모니터링BackEnd(Java)/모니터링 2023. 7. 25. 09:13
서비스를 운영하다 보면 운영 이슈들을 실시간으로 확인할 필요가 있다. 사용하는 협업 툴과 연동하여 보통 알림을 받는데 나는 slack을 사용하고 있기 때문에 slack webhook을 사용하여 이슈 알림 모니터링을 해보자! 1. slack에 앱 추가를 클릭하여 incoming-webhooks를 추가한다. 2. 웹 훅을 추가 후 포스트할 채널은 선택한다. 3. 웹 훅 URL, 라벨 지정 등 옵션들을 설정 후 저장 하면 끝! 4. 테스트 curl 테스트 실제 코드에 적용해 보자! api 전송 부분은 POST로 통신하면 되고, payload를 만드는 메서드는 아래를 참고하면 좋을 것 같다.(c#) (참고로, slack webhook doc를 보면 보내고 싶은 메시지를 text 필드에 담아서 보내라고 한다.) ..
-
조회 API 성능 최적화BackEnd(Java)/Spring Data JPA 2023. 6. 13. 12:23
✅ 아래 내용들에 대해서 알아보자 - 조회 API 성능 최적화 방법 - 최적화 VS 코드 복잡도 조회 API 성능 최적화 방법 1. 엔티티 조회 방식으로 우선 접근 패치조인으로 쿼리 수 최적화 컬렉션 최적화 -> 페이징 필요시 default_batch_fetch_size, @BatchSize로 최적화, 불필요시 패치조인 사용 2. 엔티티 조회 방식으로 해결 안 되면 DTO 조회 방식 사용 3. DTO 조회 방식으로 해결이 안 되면 Native SQL or 스프링 Jdbc Template or Mybatis 등.. 이 방식으로도 해결이 안 된다면 트래픽이 많은 경우이므로 캐싱 처리(redis, 로컬 캐시)등을 통해 해결해야 한다. 만약 캐싱 처리한다면 엔티티를 캐싱 처리하면 안 됨(라이플 사이클이 안 맞으..
-
org.hibernate.QueryException: query specified join fetching, but the owner of the fetched association was not present in the select list 에러 해결BackEnd(Java)/JPA 트러블 슈팅 2023. 6. 13. 11:51
현상 JQPL 사용 중 아래 쿼리처럼 작업했는데 "query specified join fetching...." 오류가 발생하였다. 원인 fetch join을 사용하는 이유는 엔티티 상태에서 엔티티 그래프 탐색을 하기 위해 사용하는 것인데, select 부분에 엔티티가 아닌 DTO가 있으므로 fetch join 사용이 불가능해진다! 해결법 따라서 DTO 매핑하여 반환하고 싶을때는 fetch join - join으로 변경하여 사용하도록 해야 한다. 참고자료 https://www.inflearn.com/questions/23847/queryprojection%EA%B3%BC-fetch-join
-
컬렉션 패치 조인BackEnd(Java)/Spring Data JPA 2023. 6. 12. 17:14
✅ 아래 내용들에 대해서 알아보자 - 컬렉션 패치 조인 - 컬렉션 패치조인 문제점 - 컬렉션 패치조인 한계 - 컬렉션 패치조인 최적화 컬렉션 패치 조인 아래 코드를 보면 Order 엔티티와 OrderItem 엔티티가 N:1인 관계 OnetoMany로 구성되어 있고, Order와 orderItems를 join fetch로 컬렉션 패치 조인 하고 있는 것을 확인할 수 있다. public List findAllWithItem() { return em.createQuery("select distinct o from Order o" + " join fetch o.member m" + " join fetch o.delivery d" + " join fetch o.orderItems oi", Order.class) ..
-
JWT & OAuth 정리BackEnd(Java)/Spring Boot 2023. 6. 1. 18:25
✅ 아래 내용들에 대해서 알아보자 - JWT - AccessToken/Refresh Token - OAuth JWT Json Web Token(JWT)는 웹 표준 방식으로 JSON 객체를 사용해서 인증/인가 처리를 진행할 때 사용된다. 보통 회원 인증처리에 사용되며 프로세스에 대해서 알아보자 1. 회원 인증 처리할 때 유저가 로그인 시 토큰을 발급하여 유저에게 전달하고 유저가 서버에 요청할 때마다 토큰을 HTTP Header에 포함하여 전달한다. 2. 서버 측에서는 Header에 있는 토큰을 통해 검증/권한 확인 후 작업을 처리하게 된다. 3. JWT을 통해서 처리하기 때문에 서버 측에서는 세션을 관리할 필요가 없게 되므로 자원을 아끼게 되고 세션을 관리하게 되면 중앙집중형 방식으로 진행하게 돼서 서버 ..
-
객체지향 기초BackEnd(Java)/OOP 2023. 5. 22. 21:32
✅ 아래 내용들에 대해서 알아보자 - 객체지향 - 객체 - 캡슐화 - 다형성 - 추상화 - 상속 - 기능과 책임 분리 객체지향 객체지향 프로그래밍(Object-Oriented-Programming, OOP)이란 소프트웨어 개발 패러다임 중 하나로, 현실 세계의 객체를 소프트웨어적으로 모델링하여 프로그래밍하는 방법론이다. OOP는 객체들의 상호작용으로 이루어지며, 마치 여러 독립적인 부품들이 조합, 협력, 결합으로 이루어진 단일체라고 볼 수 있다. 예를 들어, 타이어, 핸들, 차제 등으로 자동차를 만드는데 이러한 각각의 독립적인 부품들이 각자의 책임과 역할을 가져 자동차라는 완성품을 생산할 수 있게 된다. 결국 OOP를 하는 이유는 바뀌는 요구사항에 따라 프로그램을 유연하고 변경이 용이하게 가능하며, 코드..