springboot

· 기타
배경현재 회사에서 FastAPI를 쓰고 있다. 자바를 전문적으로 쓸 수 있는 개발자도, 팀장님도 잘 모르시는 상황이기에 (혹은 여러가지 이유로 인해) 자바가 아닌 상대적으로 다루기 쉬운 파이썬을 사용하고 있으며, 그 중에 FastAPI 프레임워크를 사용하고 있고 앞으로도 그렇게 사용할거 같다.  둘 다 사용해본 입장에서 성능 측면에서는 컴파일러이니까 springboot가 fastapi보다 빠르다고 생각은 하지만 얼마나 성능차이가 날까 궁금해서 한 번 직접 더미 데이터로 실험을 해보려고 한다.   컴퓨터 사양은 다음과 같고더보기프로세스 : 12th Gen Intel(R) Core(TM) i7-12700F (20 CPUs), ~2.1GHz메모리 : 16384MB Springboot와 FastAPI에 대한 사..
배경 내가 운영하고 있는 서비스가 실서버에 배포 및 운영을 하는 상태인데, 회사 내부 상품 정보를 많이 가져오면서도 처리속도를 빠르게 하기 위해 API 내부에는 ExecutorService 라는 객체를 쓰면서 멀티쓰레드를 활용해 여러번 API 호출하는 부분이 있었는데, 그걸로 인해 힙 메모리가 일정비율로 채워졌음에도 불구하고 GC가 제대로 일어나지 않은 것처럼 보이고 힙 메모리 사용량 70% 이상임에도 계속 늘어나는 메모리 누수가 일어나는 현상이 일어나고 있었다. 현재 다른 서비스 개발에 집중을 하고 있어서 왜 그런지에 대해서 명확히 찾지를 못했채, 힙 메모리 사용량 일정 비율에 의해 모니터링 알람 울리면 강제로 GC 명령어를 입력해서 임시방편으로 대응하고 있다. 원인 파악 내가 생각한 메모리 누수 원인..
· spring
1. 클라이언트 요청의 시작 웹 애플리케이션에서의 모든 작업은 클라이언트의 요청으로 시작됩니다. 사용자는 URL을 통해 특정 리소스에 접근하거나, 폼을 제출하게 됩니다. 2. 서버 수신과 필터 처리 스프링 부트 내장 웹 서버가 요청을 받기 시작하면, 최초로 필터(Filter) 영역을 거칩니다. 2.1 필터 (Filter) 필터는 서블릿 컨테이너 레벨에서 작동하며, 요청과 응답을 가로챕니다. 인증, 인가, 로깅, 인코딩 처리 등에 사용될 수 있습니다. 3. 디스패처 서블릿과 인터셉터 요청이 필터를 통과하면 디스패처 서블릿으로 전달되며, 여기서 인터셉터(Interceptor)가 작동할 수 있습니다. 3.1 인터셉터 (Interceptor) 인터셉터는 필터와 유사하게 동작하지만, 스프링 컨텍스트 내에서 작동하..
· spring
저번에 이어서 mockito에 대해 설명을 할까 한다. 저번 junit 테스트 했을 때는 일일히 게시판쓰기를 통해서 db에 데이터가 추가가 되고 그걸가지고 테스트를 하였는데, 매번 그렇게 하면 번거로운 부분도 있고, 상황에 따라서 데이터를 맞춰야하는 부분도 생긴다. mockito를 이용하면, 굳이 맞출려고 할 필요없이 어떤 예측한 값이 나온다고 가정을 해서 개발자가 정할 수 있게 되서, 테스트를 하는데 좀 더 편리하게 할 수 있는 장점을 가진다. 일단 mockito 정의를 보면? Mockito란 가짜(Mock) 객체를 지원하는 테스트 프레임워크 @ExtendWith(MockitoExtension.class) 어노테이션을 테스트 클래스에 붙여 사용할 수 있다. 유닛테스트를 할 때, 위의 Mockito를 통..
· spring
회사에서 설계/개발을 하고 테스트를 기존에 만들어진 웹 페이지로만 진행했기 떄문에, 군데군데 숨어있는 버그를 찾지 못하고 짜짤짜잘한 이슈들이 나오는 경우가 있었다. 최근에 유튜브에서 더 나은 개발자로 성장하기 위해서는 테스트코드를 잘 작성하라는 말이 나오면서 이번에 springboot에 존재하는 junit에 대해 다뤄볼까 한다. Junit이란? - Java에서 단위테스트를 지원해주는 프레임워크 Junit 문법 @BeforeClass : 테스트 시작시 1번만 호출 @Before : 테스트 시작전 호출 @After : 테스트 완료시 호출 @AfterClass : 모든 테스트 완료시 1번 호출 Junit 간단소스 import org.junit.After; import org.junit.Before; impor..
· spring
AOP이란? AOP(Aspect Orient Programming), 관점지향 프로그래밍이라고 하며, 공통된 영역와 비즈니스 로직을 구분하고 필요한 곳에 비즈니스 로직만 구현하겠끔 집중하게 도와준다. 장점 1. 코드 중복 줄어듬 2. 공통된 영역과 비즈니스 로직이 구분돼 개발이 좀더 용이해짐 용도 1. 로깅 2. DB 트랜젝션 3. vaildation ... 기본적인 문법 JoinPoint: 현재 실행되고 있는 패키지 영역 PointCut: 어떤 패키지 JoinPoint를 사용할 것인지를 결정 실행하고 있는 모듈을 사용자가 원하는 범위까지 조절할 수 있다. Advice: 각 JoinPoint에 삽입되어져 동작할 수 있는 코드 Before : 조인포인트 전에 실행 AfterReturning : 조인포인트에..
개발만파볼까
'springboot' 태그의 글 목록