Tech/Spring40 Pinpoint 적용기: 3️⃣Pinpoint Web, Collector, Agent 설치 및 세팅 들어가며드디어 본론이 나왔다! 이전 글에서 Pinpoint 아키텍처 및 서버 구성 방식, HBase 설치 및 세팅 방법에 대해 알아보았다. Pinpoint 적용기: 1️⃣Pinpoint 아키텍처 및 서버 구성 방식 (Spring Boot 3.2.0, Maven 4.0.0, JDK 17)들어가며회사에서 pinpoint 를 적용해봐! 라는 업무를 받았다. pinpoint가 뭔데? APM이 뭔데? 아무런 설명을 듣지 못하고 작업을 진행하게 되었지만 이 또한 기회...! 공부하면서 서버에 직접 적용까지ssonzm.tistory.com Pinpoint 적용기: 2️⃣HBase 설치 및 세팅들어가며이번에는 pinpoint를 사용하기 위해 HBase 설치하고 세팅하는 과정을 정리하려고 한다. 그 과정에서 마주했던 .. Tech/Spring 2024. 10. 15. Pinpoint 적용기: 2️⃣HBase 설치 및 세팅 들어가며이번에는 pinpoint를 사용하기 위해 HBase 설치하고 세팅하는 과정을 정리하려고 한다. 그 과정에서 마주했던 문제들 그리고 해결방법까지 정리할 것이다. 이번엔 내용이 많으니까 바로 본론으로 들어가야겠다! 우선 Window10 환경에서 진행했고 이미 배포된 서버가 있어서 거기에 ssh 접속을 통해 진행했다. 배포된 서버는 linux 환경이었으며, 대부분의 파일 작업은 Filezilla를 사용했다. 해당 서버에는 톰캣 8097, 8098으로 애플리케이션이 동작 중이다. 이 두 가지를 모두 pinpoint로 연동할 계획이었다. 동일한 collector로 각 agent를 연결하는 방식으로 진행했다. war 파일로 톰캣 서버 배포하는 방법과 그 과정에서 만난 문제들 및 해결 방법은 추후에 따로 정리.. Tech/Spring 2024. 10. 14. Pinpoint 적용기: 1️⃣Pinpoint 아키텍처 및 서버 구성 방식 (Spring Boot 3.2.0, Maven 4.0.0, JDK 17) 들어가며회사에서 pinpoint 를 적용해봐! 라는 업무를 받았다. pinpoint가 뭔데? APM이 뭔데? 아무런 설명을 듣지 못하고 작업을 진행하게 되었지만 이 또한 기회...! 공부하면서 서버에 직접 적용까지 해보기! 너무 좋은 기회라는 생각에 설렘을 갖고 며칠간 몰두했다. 이 글에서는 Pinpoint가 무엇인지, 아키텍처 및 설치 방법 그리고 그 과정에서 마주한 문제 및 해결 방법 등 길었던 적용기를 정리하려고 한다. 화이팅...! (●'◡'●) 프로젝트 버전은 Spring Boot 3.2.0, Maven 4.0.0, JDK 17이고 Pinpoint는 2.5.1, HBase는 1.2.7 사용했다. Pinpoint란 무엇인가?네이버에서 만든 대규모 분산 시스템의 성능을 분석하고 문제를 진단, 처.. Tech/Spring 2024. 10. 10. Spring Boot 3.x.x 버전에서 TestContainers 적용하기 보호되어 있는 글 입니다. 2024. 4. 30. Artillery를 사용한 성능 테스트 개요 먼저 Node.js 설치해준다. https://nodejs.org/en/download Node.js — Download Node.js® Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine. nodejs.org 각자 해당하는 것을 설치하면 된다! npm 으로 artillery 설치! 설치 후 버전 확인해보기 루트 폴더 아래 yaml 파일 생성하기 나는 인텔리제이 터미널에서 실행했다. 이는 성능 테스트를 실행시킴과 동시에 결과를 json 파일에 리포팅하는 것이다. 결과를 살펴보면 p95: 95% 사용자 p99: 99% 사용자 어느정도의 레이턴시를 느끼고 있는지 이를 알 수 있다. html 파일로 변경하는 명령어이다. 브라우저를 파.. Tech/Spring 2024. 4. 1. Spring으로 게시판 만들기(2) : 게시글 조회 게시글을 조회할 때는 여러가지 옵션이 있다. 1. 카테고리 (전체, 주인 찾아요, 물건 찾아요) 분실물 찾기용 커뮤니티라서 카테고리가 이렇게 설정된 점 참고 2. 검색어 3. 해결한 글 제외하기 4. 물놀이 장소 선택 총 4가지 옵션을 통해 조회를 수행할 수 있다. 이 기능을 구현할 때에는 Querydsl을 사용해서 구현했다. 다른 부분은 생략하고 Repository 부분만 중점적으로 다루려고 한다. 전체 코드 더보기 public Slice getLostFoundBoardListBySlice(LostFoundBoardListReqDto lostFoundBoardListReqDto, Pageable pageable) { JPAQuery query = queryFactory .select( Projectio.. Tech/Spring 2024. 3. 19. 스프링 순환 참조 에러 발생 및 해결 방법 사전 지식 @Bean 특징 @Bean이 붙은 메서드는 싱글톤이므로 여러번 호출되어도 동일한(하나의) 객체만 return된다고 알고있지만, @Configuration 클래스 내부에서 지정된 @Bean 메서드에만 한정되는 이야기이다. @Configuration 메서드 내부에 있지 않은 @Bean 메서드는 싱글톤을 보장받을 수 없다. 싱글톤 보장 원리 CBLIB(바이트 코드 조작 라이브러리)를 이용하여, @Configuration이 붙은 클래스를 상속한 임의의 클래스를 만들고 그 임의의 클래스를 빈으로 등록한다. 그렇게 빈으로 등록된 클래스 내부의 @Bean 메서드들은 Spring Container에 존재한다면 Spring Container에 존재하는 빈을 반환하고, 없다면 새로 생성하여 빈으로 등록 후 반환.. Tech/Spring 2024. 3. 1. Spring으로 게시판 만들기(1) : 개요 현재 진행하고 있는 프로젝트에서 분실물 찾기 게시판을 담당하여 구현하고 있다. 어떻게 보면 CRUD밖에 없어서 시시하다고 생각할 수 있겠지만 기본은 언제나 중요하다고 하니까. 스스로 기본기가 부족하다고 느꼈고 차근차근 다시 쌓아볼 예정이다. 아직 프로젝트를 완성하진 못했지만 지금까지 구현한 기능에 대해 정리하고, 고민했던 거나 궁금했던 걸 기록해보기 위한 목적으로 작성하게 되었다 ꒰⑅◡̎ ꒱𓈒𓏸 데이터베이스 우선 데이터베이스 설계부터 살펴보면, LostFoundBoard: 분실물 찾기 게시판 LostFoundBoardImage: 분실물 찾기 게시판 이미지 Comment: 분실물 찾기 게시판 댓글 (현재 고민하고 있는 게 초기에는 불필요한 관계라고 판단하여 Comment에서 Member 연관관계를 맺지 않.. Tech/Spring 2024. 2. 22. 스프링 AOP(Aspect Oriented Programming) AOP는 Aspect Oriented Programming의 약자로 관점 지향 프로그래밍이라고 불린다. 관점 지향은 쉽게 말해 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하겠다는 것을 의미한다. 여기서 모듈화란 어떤 공통된 로직이나 기능을 하나의 단위로 묶는 것을 말한다. 예를 들어 핵심적인 관점은 결국 우리가 적용하고자 하는 핵심 비즈니스 로직이 된다. 또한 부가적인 관점은 핵심 로직을 실행하기 위해서 행해지는 데이터베이스 연결, 로깅, 파일 입출력 등을 예로 들 수 있다. AOP에서 각 관점을 기준으로 로직을 모듈화한다는 것은 코드들을 부분적으로 나누어서 모듈화하겠다는 의미다. 이때, 소스 코드상에서 다른 부분에 계속 반복해서 쓰는 코드들을 발.. Tech/Spring 2024. 2. 13. Spring Security 로그인 과정 Sequence Diagram 1. 아이디, 비밀 번호 입력 2. 로그인 요청 3. Authentication 시도 4. 사용자 계정이 Lock 상태인지 검사 (로그인 실패 횟수 5회 -> 계정 잠금) 5a. 만약 Lock 상태라면 LockedExcepion이 발생하고 Authentication 실패 5b. 만약 Lock 상태가 아니라면 다음 검증 단계로 넘어감 6. 비밀번호 일치 검증 7a. 만약 비밀번호가 일치하지 않다면 BadCredentialsException 발생하고 Authentication 실패 7b. 만약 비밀번호가 일치하다면 다음 검증 단계로 넘어감 8. 회원강비 승인 여부 검사 (슈퍼 관리자가 회원가입 승인을 받아줘야 회원가입 가능) 9a. 만약 회원가입 승인이 되지 않았다면 DisabledException 발생하고.. Tech/Spring 2024. 1. 31. Spring Security 로그인 동작 원리 1. 로그인 요청 사용자가 Form을 통해 로그인 정보가 담긴 요청을 보냄 2. Authentication 생성 AuthenticationFilter가 요청을 받아서 UsernamePasswordAuthenticationToken(Authentication 구현 객체) 생성 3. Authentication 전달 AuthenticationManager가 Authentication을 전달받음 AuthenticationManager는 실제 인증 역할을 하는 AuthenticationProvider를 관리함 4. 인증을 위한 Authentication 전달 AuthenticationFilter로 부터 Authentication 객체를 받아 인증 처리를 할 수 있는 AuthenticationProvider에게 인.. Tech/Spring 2024. 1. 27. 예외와 트랜잭션 커밋/롤백 예외가 발생했는데, 내부에서 예외를 처리 못 하고 트랜잭션 범위 밖으로 예외를 던지면 어떻게 될까? 예외 발생 시 스프링 트랜잭션 AOP는 예외 종류에 따라 트랜잭션을 커밋하거나 롤백한다. 언체크 예외인 RuntimeException, Error와 그 하위 예외가 발생하면 트랜잭션을 롤백한다. 체크 예외인 Exception과 그 하위 예외가 발생하면 트랜잭션을 커밋한다. 물론 정상 응답(리턴)하면 트랜잭션을 커밋한다. 테스트 코드 @SpringBootTest public class RollbackTest { @Autowired RollbackService rollbackService; @Test void runtimeException() { assertThatThrownBy(() -> rollbackSe.. Tech/Spring 2024. 1. 3. 이전 1 2 3 4 다음 728x90 반응형