반응형
- 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 한 대 이므로 ..
- Spring Dto -- Nested Class?2021-06-04 17:16:49중첩 클래스 어떤 상황에서 써야 할까 스프링에서 컨트롤러에서 Dto 자주 사용하는데 이 Dto는 메서드 마다 새로 만드는 경우가 많은데, 재사용할 상황이 많이 안생겨서 이걸 굳이 Dto 패키지를 만들어서 거기에 넣어두거나 특정 도메인 패키지에 넣어둘 필요 없이 그냥 중첩 클래스로 쓰는게 좋지 않나? 라는 생각에서 시작했다. 일단 중첩 클래스 정리 중첩 클래스는 선언위치에 따른 분류 선언위치 설명 멤버 클래스 인스턴스 멤버 클래스 class A{ class B{ ...} } A 클래스를 생성해야만 사용가능한 B 중첩 클래스 정적 멤버 클래스 class A{ static class B{...} } A 클래스로 바로 접근 가능한 B 중첩 클래스 로컬 클래스 class A{ void method(){ class..
반응형