목록전체 글 (110)
Skipalong's tistory
오늘은 테스트코드를 작성하는 시간을 가졌다. 그 중 Controller 를 테스트할 때 사용한 MockMvc에 대해 정리해보려고 한다. MockMvc는 Spring MVC 어플리케이션을 테스트할 때 사용하는 라이브러리로서, 서버에 배포하지 않고도 Spring MVC의 동작을 재현할 수 있게 해준다. 사용방법은 이런식으로 mockMvc.perform메서드로 가상의 요청을 실행하고 andExpect메서드로 응답을 검증하는 식이다. 아직도 테스트코드를 작성하는데 많이 미숙하여 어려움을겪고 있지만 팀원들에게 물어보며, 구글에 많이 찾아보며 극복해나가고 있다. 앞으로도 mockMvc를 많이 사용할 것 같은데 사용법을 익혀두어야겠다.
이번 프로젝트를 하면서 늦은감이 있지만 테스트코드를 작성하려고 한다. 테스트코드를 작성하면 CI에 테스트코드를 통과해야 merge와 배포를 할 수 있게 하는 기능을 사용할 수 있어 양질의 코드를 짤 수 있는 효용이 있다. 그리고 테스트코드를 기반으로 API문서를 생성해주는 RestDocs라는 툴을 사용하기로 했다. RestDocs와 Swagger가 비슷한 기능을 해주는 툴이라서 둘 중에 어떤것을 사용할지 의논해보았는데 Swagger는 자동으로 API를 스캔하고 문서화하는 데 중점을 두고 있고 이는 개발 초기 단계에서 API의 기본 구조를 빠르게 파악하고 공유하는 데 유용하다. 또 Swagger UI를 통해 API를 직접 테스트하고 시각화할 수 있다. 그러나 자동화된 문서화 방식으로 인해, API가 변경될..
얼마전에 좋아요의 동시성 문제를 테스트 할 때 멀티쓰레드 환경에서 테스트를 해 보았는데 쓰레드에 관련된 개념을 한 번 정리해야 할 것 같아서 그 내용을 정리해 보겠다. 프로세스와 쓰레드 프로세스는 독립적인 실행 환경을 가지며 메모리를 분리하여 운영되는 프로그램 인스턴스이다. 스레드는 프로세스 내에서 동작하며 메모리를 공유하는 작은 실행 단위를 나타낸다. 차이점 프로세스는 독립된 메모리 공간을 가지고 있으며, 스레드는 같은 프로세스 내에서 메모리를 공유한다. 프로세스간의 데이터 공유 및 통신은 IPC 기술을 사용해야 하지만, 스레드는 같은 프로세스 내에서 간단하게 데이터를 공유할 수 있다. 스레드의 생성 및 소멸 비용이 프로세스보다 낮다. 프로세스는 독립적으로 실행되기때문에 문제가 다른 프로세스에 영향을 ..
이번 주 동안 같은 기수의 동료들의 코드를 리뷰하고 우리가 쓴 코드도 리뷰 받고 미흡한 부분을 지적받고 성능을 개선하는 등의 작업을 하고 있다. 그중에는 미처 구현하지 못한 기능이나 추가적인 기능을 구현하는 작업도 있지만 백엔드 과정을듣고있는만큼 우리팀은 성능개선에 중점을 두고 이번 주차를 진행하고 있다. 그래서 성능을 최적화하기위한 방법이 어떤 방법이 있나 찾아 보았다. Query 최적화 쿼리 최적화는 데이터베이스에서 SQL 쿼리를 최적 실행계획으로 변환하는 프로세스로, 목표는 최소 자원 소모, 최적 경로 선택, 데이터 일관성 유지이다. 주요 단계는 파싱, 최적화, 실행계획 선택, 실행 후 모니터링 및 조정으로 구성되며 데이터베이스 성능향상을 위한 중요한 과정이다. DB 로직 최소화 빈번하게 액세스하..
오늘은 그간 골치를 썩였던 100명이 하나의 코스에 좋아요를 동시에 눌렀을 때 메서드가 정상적으로 100개의 좋아요를 누르느냐하는 동시성 문제 테스트에 성공했다. 우선 우리팀의 예상은 '동시성 문제가 생기지 않는다.' 였다. 하지만 우리의 예상이 정답은 아니고 튜터님이 질문을 하신 이유가 있을 것이기 때문에 직접 테스트해볼 필요가 있었다. 그래서 테스트를 해보려고 자료를 찾고 오늘 튜터님에게 테스트 방법과 처리방법에 대해 질문을 했고 내부적으로 테스트 코드를 작성하는 것을 가이드해주셔서 아래와 같이 테스트코를 작성하고 검증해본 결과 실제로 동시성 문제가 생기지 않았다. 우선 내가 작성한 테스트 코드는 이렇다. SpringBootTest 애너테이션과 Autowired 애너테이션으로 LikeService와 ..
오늘은 최종프로젝트에서 제기된 좋아요 기능의 동시성문제와 query성능개선부분을 테스트할 때 사용할 JMeter에 대해 간단하게 정리해보겠다. JMeter는 Apache Software Foundation에서 개발한 오픈 소스 소프트웨어다. 이는 주로 웹 애플리케이션에 대한 성능 테스트를 위해 사용되며, HTTP, JDBC, JMS, Web Service 등 다양한 프로토콜을 지원한다. JMeter의 주요 기능은 다음과 같다: 로드 테스트: 웹 애플리케이션이나 서버가 특정 부하(요청의 수나 동시 접속 등)를 감당할 수 있는지 확인하는데 사용됩니다. 성능 테스트: 시스템의 응답 시간, 처리량 등의 성능 지표를 측정합니다. 함수 테스트: 웹 애플리케이션의 기능이 제대로 동작하는지 확인하는데 사용될 수 있습니..