반응형
- Spring HandleMethodArgumentResolver로 반복적인 Session 연산 처리2021-10-08 18:23:30프로젝트를 진행하며 Spring Security를 사용하고 있어 Controller나 Service layer에서 별도로 사용자 인증, 인가 여부에 대해 하드 코딩하지 않아도 돼서 각각의 layer의 역할이 늘어나는 일을 막을 수 있다. 만약 별도로 login, logout을 구현해서 사용했더라면 추후 인증, 인가 방식에 변동이나 추가가 있을 경우 시스템을 확장 시키는게 아니라 변화 시켜야 하기 때문에 OCP에 반한다고 생각해서 추상화가 잘 되어 있는 Spring Security를 사용하게 되었는데 인증과 인가를 해결하더라도 컨트롤러에서 사용자 세션의 정보를 가져오는 부분에서는 Controller나 Service Layer에 녹아들 수 밖에 없었다. 물론 Spring Security는 어느 Layer에서..
- Spring 로깅 log4j22021-10-07 17:48:04안녕하세요. 오늘은 프로젝트 진행중 logging하며 공부했던 내용을 정리 해보겠습니다. logging의 목적은 프로그램 동작중 어떤 상황에 어떤 일이 발생했을 때 그 일을 logging level로 분류하여 나중에 그 정보를 바탕으로 추적을 하거나 오류 상황을 다시 보기 위함등등 많은 이유가 있습니다. 많은 사람들이 개발을 시작할때 System.out.println으로 데이터를 찍어보곤 하죠 하지만 이 메서드는 사용해선 안됩니다. 그 이유는 이런식으로 내부에 synchronized를 사용하고 있기 때문입니다. synchronized를 사용하면 락을 걸어 다른 스레드의 접근을 막고 한 개의 스레드만 동작하게됩니다. 멀티쓰레딩 환경에서 무분별한 동기화의 성능 저하의 원인이 될 수 있습니다. 그래서 Syst..
- Ngrinder로 성능을 테스트 후 캐시로 성능 올리기2021-10-06 14:07:36요즘 진행하고 있는 토이 프로젝트에서 어느정도 API 구현이 끝난 후 "현재 이 서버가 얼마나 많은 부하를 감당할 수 있을까?" 라는 생각이 들었습니다. 그래서 성능을 테스트하고자 네이버 오픈소스 프로젝트인 nGrinder를 사용하여 서버에 부하를 걸고 테스트를 해보았습니다. (http://naver.github.io/ngrinder/) 테스트로 선택한 API는 현재 서버에서 가장 비용이 비싸다고 생각되는 API(한 트랜잭션안에 제일 많은 조인 쿼리와 실제 나가는 쿼리 수가 많음)를 선택하여 성능을 테스트 하였고 이후 성능 개선을 위해 캐시를 적용했습니다. 이러한 테스트는 여러개의 서버를 두고 해야 정확한 테스트가 가능하지만 제가 가진 서버는 오직 제 컴퓨터 한 대와 이미 사용중인 EC2 한 대 이므로 ..
- JWT Spring-Security-Test로 테스트시 인증정보 주입2021-07-22 23:16:53스프링 시큐리티를 적용한 토이 프로젝트에서 JWT로 인증,인가 기능을 부여한 컨트롤러를 테스트하는 과정에서 간단하게 Spring-Security-Test에 @WithMockUser를 사용하면 테스트에 필요한 인증된 인증 정보를 제공받을 수 있어서 기본 설정으로 테스트를 진행할 수 있는데 Spring Security는 기본적으로 세션-쿠키 방식이고 내가 진행한 방식은 JWT 방식의 요청을 처리하는 컨트롤러를 테스트해야 해서 DB의 접근이 필요했다. @WithMockUser는 일반적인 상황의 기본 Principal을 제공하여 Authentication객체가 Security Context에 등록이 되는데 보통 OAuth2처럼 Provider들에 따라 Principal의 구현이 달라지는 상황에서는 개발자가 Us..
반응형