성능테스트 : Elastic APM 사용법! (3) # 개요 이전에는 Elastic APM을 로컬과 AWS에서 사용법을 다루어 보았습니다. AWS의 프리티어인 t2.small은 Elastic APM을 구축하기에 성능이 좋지 않기 때문에 Elastic Cloud를 이용하여 Elastic APM을 사용하는 방법에 대해 알아보겠습니다. # 주의! Elastic Cloud는 회원가입 후 14일간 무료입니다. 과금이 되지 않도록 조심해 주세요! # Notion 간단한 실행법 1. Elastic Cloud사이트로 가서 회원가입을 한다. https://cloud.elastic.co/login 2. Tutorial 페이지로 이동한다 https:///app/home#/tutorial/apm 3. APM Agent를 다운..
성능테스트 : Elastic APM 사용 부터 AWS까지! (1) # 개요 프로젝트를 진행하면 구현한 API의 성능을 테스트 해보고자 합니다. 단순히 API의 성능을 테스트하기 보다는 Redis를 적용하기 전,후의 성능과 Redis 캐시를 적용하기 전,후의 성능을 테스트 해보고 싶었습니다. Redis 적용은 다음 게시글에서 자세히 다룰 것이며 이번 게시글에서는 Elastic 사용법에 대해 간단하게 다뤄볼 것입니다. # 기술스택 기본적으로 Elastic APM을 사용하기 위해서는 Elastic Search, Elastic APM Server, Kibana가 사용됩니다. 또한 docker를 사용하여 서버를 실행시킬 것입니다. 그후 Jmeter로 초당 10번의 트래픽을 주어 성능과 트레이싱을 확인해볼 예정입니..
트러블 슈팅 : Eureka AWS 환경에서 사용하기 # Overview MSA 프로젝트를 진행하며 Spring Cloud를 이용하여 Gateway를 구성하여 클라이언트의 모든 요청이 Gateway로 향할수 있게 하였습니다. 또한 라우터를 구현하여 각 요청이 각 서비스를 찾아 갈 수 있도록 하였습니다. 이때 로드밸런싱을 구현하고 싶어 Eureka를 사용하였습니다. # 문제점 localhost환경에서 각 마이크로 서비스를 Eureka에 등록을 하고 로드밸런싱이 잘 되는 것을 확인하였지만 docker-compose를 이용하여 배포를 하니 서비스 자체를 찾지 못하는 에러가 있었습니다. . # Notion - 트러블 슈팅 노션에 있는 트러블 슈팅 페이지를 참고하면 보기 편리해요! https://star-figh..
Q. 상황 팀원과 프로젝트를 진행하며 PR을 2주만에 코드리뷰를 하고 PR단위가 1000이 넘어가면서 Github를 잘 못 사용하고 있고 코드리뷰를 제대로 하고 있지 않다고 생각하였습니다. PR의 단위를 작게하려고 노력하고, 즉각적인 리뷰를 통해 따른 코드리뷰를 해야한다는 것을 알고 1개의 커밋에는 1개의 행위만, 1개의 PR에는 1개의 작업만 해야하는 것을 알지만 그렇게 실행하고 있지 못하였습니다. Q. 질문 문제점을 개선하기 위해 앞으로 PR작업을 어떻게 해야 할까? PR관리 방법 7가지 PR관리 방법은 따로 정리하지 않을 생각입니다. 헤이딜러 개발 블로그에 PR곤리방법에 대해 자세히 설명해 주고 있으니 PR관리 방법에 대해 알고 싶으신 분들은 링크를 참고해 주세요! https://medium.com..
Q. 상황 인터셉터를 설정 클래스에서 url 형식으로 적용 메소드를 지정하는 것이 아닌 Custom Annotation 기반으로 원하는 메소드에 지정하여 가독성을 높이고자 하였습니다. 하지만 @Retention / @Documented / @Target의 기능을 제대로 이해하지 못하여 오류속에서 헤매고 있어 3개의 기능에 대해 알아보고자 하였습니다. Q. 질문 @Retention / @Documented / @Target 은 어떤 역할을 할까? A. 답변 meta-annotaiton ? meta-annotation 은 다른 annation 에서도 사용되는 annotation 의 경우를 말하며 custom-annotation 을 생성할 때 주로 사용됩니다. @Retention 어노테이션으로 어느 시점까지 ..
Q. 질문 Spring의 웹 3계층을 공부하며 DAO가 Repository계층에 속한다는 블로그의 글을 본적이 있다. 정말 DAO와 Repository는 같을까? A. 설명 Dao와 Repository의 차이점을 이해하기위해 필요한 선행지식은 다음과 같다. 더보기 1. 객체지향 2. DAO 3. DDD 4. 기본적인 웹 설계 구조 DAO가 만들어진 목적을 이해하기 위해서는 객체지향적 설계법이 대한 지식이 수반되어야 한다. 또한 Repository를 이해하기 위해서는 DDD를 알아야 한다. 왜냐하면 DDD에서 Repository라는 개념이 튀어나왔기 때문이다. 실제로 스프링 프레임워크의 @Repository 어노테이션을 들어가서 보면 다음과 같이 명시되어 있다. 더보기 Indicates that an an..
Q. 질문 Spring의 웹 3계층을 공부하며 DAO가 Repository계층에 속한다는 블로그의 글을 본적이 있다. DAO / Mapper / Repository는 각각 어떤 차이점이 있을까? A. 답변 흔히 스프링 프로젝트의 구조는 2가지로 나뉜다고 한다. 1) Controller.java - Service.java - DAO.java - Mapper.xml 1)구조에서 DAO.java는 인터페이스와 클래스의 결합된 형태이다. 2) Controller.java - Service.java - Mapper.java - Mapper.xml 2)의 구조에서 Mapper.java는 단순 인터페이스이다. 1. DAO란? Data Access Object의 약어로 실질적으로 DB에 접근하여 데이터를 조회하거나 조..
Q. 궁금점 (상황) 로그인 기능을 세션으로 구현하였습니다. 사용자가 로그인 후 개인정보 수정 혹은 주문목록으로 세션을 가지고 있는 사용자만 접근이 가능하고자 할때, 저희는 로그인 인증을 "AOP/필터/인터셉터"로 가능합니다. 즉, 공통 관심사는 중복을 발생할 수 있기 때문에 "AOP/필터/인터셉터"를 이용하여 처리하며 각각의 장단점을 알아보고자 합니다. Q. 질문 "AOP/필터/인터셉터"는 어떤 차이가 있으며 무엇을 사용하는 것이 좋을까? A. 답변 A1) AOP 장점1) 인터셉터와 필터와 달리 메소드 전후의 지점을 자유롭게 설정가능하며, 인터셉터와 필터가 주소로 밖에 걸러낼 대상을 구분 할수 없는 것에 비해서 AOP는 주소, 파라미터, 어노테이션등 다양한 방법으로 대상을 지정할 수 있다. 장점2) 인..