기존 배포 방식의 문제점 저희 프로젝트는 Docker, Github Actions를 사용해서 배포합니다. 기존 배포 프로세스는 아래와 같습니다. 테스트 및 jar 빌드 빌드된 jar를 포함한 서버 이미지 생성 Docker Hub에 이미지 업로드 SSH로 서버에 접속해 빌드한 이미지 Pull 기존 서버 컨테이너 삭제하고, 새로운 ...
[Spring] 버스 도착정보 수집
버스 도착 예측 시간 제공 저희 프로젝트의 대학교 앱에서는 버스 도착정보도 제공합니다. 타사의 지도 앱이나 대중교통 정보 앱을 사용하면 더 쉽게 볼 수 있을텐데 왜 대학교 앱에서도 제공할까요? 대학교 정문에서 탈 수 있는 버스는 24번, 8100번, 1100번 등이 있습니다. 하지만 이 버스들은 기점이 정문과 2정거장밖에 차이가 나지 않습니다....
[Spring] 게시판 기능 설계
제가 참여하고 있는 프로젝트는 커뮤니티 기능이 핵심입니다. 그래서 그만큼 게시판이 중요한 기능이었어요. 이 글에는 게시판 기능을 구현하며 고민했던 경험과 제 나름대로의 해결 방법이 담겨있습니다. 게시판 기능 게시판은 사용자들이 게시물을 조회, 작성, 수정 및 삭제할 수 있는 기본적인 API뿐만 아니라, 댓글, 좋아요, 태그, 신고와 같은 다양한 부...
[CS] Network - OSI, TCP/IP 모델
네트워크 계층 모델 우리가 주고받는 HTTP통신을 생각해볼게요. 이 HTTP통신은 불과 몇 초만에 끝나지만, 그 내부를 들여다보면 많은 처리들이 있습니다. 인터넷에 접속하면 TCP연결을 해야하고, 이 연결을 위해 3-way handshaking이 필요하며, 데이터가 중간에 소실되면 이를 감지하고 재전송을 요청하고, 데이터의 크기가 크면 나누어 보내...
[Spring] 스프링 부트 각종 테스트 방법 (3) - Repository
1편 - service 2편 - controller 3편 - repository Data JPA Repository 테스트 준비 CrudRepository를 구현하는 Repository를 테스트합니다. 저는 예시로 우선 아래와 같이 Schedule 모델을 만들었습니다. @Entity @Getter @NoArgsConstructor(access...
[Spring] 성능 테스트 - 좋아요 기능
성능 테스트 결과 좋아요 기능만 성능 테스트를 해봤습니다. Redis를 사용해 구현한 경우에는 평균 TPS가 2,454가 나왔습니다. DB만을 사용해 구현한 경우에는 평균 TPS가 1,317가 나왔습니다. TPS만 보면 성능 자체는 대략 86%정도 향상되었다고 볼 수 있겠네요. 테스트 도중 발견한 문제점 Hikari Connection...
[Spring] nGrinder를 활용한 성능 테스트
얼마전 좋아요 기능을 만들고, 성능 개선을 위해 Redis를 도입했습니다. 이 방식이 실제로 성능 개선이 되는지? 얼마나 개선되었는지? 테스트를 해보기로 했습니다. 스트레스, 부하, 성능 테스트 이 테스트들은 비슷한 말 같지만 목적이 다릅니다. 스트레스 테스트 서버에 한계 이상의 트래픽을 주어 시스템의 한계를 확인하는 것이 목표입니다. ...
[Spring] 컨트롤러에 사용자 인증 붙이는 방법
API에 따라 권한을 다르게 주어야합니다. 어떤 API는 누구나 실행해볼 수 있지만, 로그인한 사용자만 또는 관리자만 실행할 수 있는 API가 있습니다. Spring Security와 연동하면 쉽게 이런 권한들을 API별로 줄 수 있습니다. Secured Annotation @Secured("ROLE_USER") 위와 같이 사용합니다. 이 어노...
[CS] CPU Bound와 IO Bound
CPU Burst와 IO Burst CPU Burst는 특정 시간동안 CPU 명령을 실행하는 것을 말합니다. IO Burst는 특정 시간동안 I/O요청 및 기다리는 것을 말합니다. OS에서 실행되는 프로세스는 CPU Burst와 IO Burst의 연속으로 동작합니다. 예를 들어 여러분의 브라우저는 대략 아래처럼 동작할겁니다. ...
[Spring] Redis 사용하기 (1) - 좋아요 기능 성능 개선
좋아요 기능 좋아요 기능은 게시글을 추천하는 기능입니다. 게시글을 추천하면 ‘좋아요’ 수가 1 증가한다. 게시글별로 한 유저당 한 번만 ‘좋아요’ 표시를 할 수 있다. ‘좋아요’는 취소할 수 있다. (선택) ‘좋아요’한 사람들 목록을 볼 수도 있다. ‘좋아요’한 사람들의 목록을 보는 것은 이 포스트에서 다루지 않습니다. Red...