프로젝트를 진행하면서 조회 로직들의 개선이 필요하다는 생각이 들었습니다. 그 과정에서 겪은 시행착오와 고민들을 공유하고자 기록을 남깁니다. 개발환경 - spring boot 3.2.0- gradle 8.5- QueryDSL- EC2- Docker- MySQL 8.0.32- RedisJMeter를 이용한 성능테스트 진행 먼저 현재 구현한 로직의 조회속도를 파악해야 했습니다. 저는 자바 오픈 소스 툴인 JMeter를 선택했는데요, 설치와 사용법이 쉽고, HTML 형식의 보고서를 제공해 주는 장점이 있어 선택하게 되었습니다. JMeter를 설치하고 본격적으로 성능테스트를 진행했습니다. 몇 명의 사용자가 접근할지 Thread Group을 설정하고, 테스트하고자 하는 메서드의 HTTP Request를 설정했습니..
전체 글
객체들의 상호작용을 한눈에 파악하고, 기능들이 어떤 시나리오로 움직이고 있는지 확인하기 위해 시퀀스 다이어그램을 만들기로 했습니다. 다양한 툴들 중 인텔리제이에서 'SequenceDiagram' 플러그인을 이용해 다이어그램을 생성하는 방법이 가장 쉽고 빠른 것 같아 플러그인으로 다이어그램을 생성했습니다. plugin 설치 우선 인텔리제이에서 플러그인을 설치합니다. IntelliJ IDE를 실행하고, Plugins에 들어가 "sequenceDiagram"을 설치합니다. 플러그인 설치 후 IDE를 재부팅합니다. 사용방법 다이어그램을 생성하고 싶은 클래스로 이동합니다. 그 후 Alt+s / option + s 로 직접 접근합니다. 이렇게 하면 우선 시퀀스 다이어그램이 생성됩니다. 하지만 포트폴리오나..
개발환경 - spring boot 3.2.0 - gradle 8.5 - ec2 - Docker - Github Actions 프로젝트의 개발서버를 구축하면서 CI/CD 과정을 진행하는 도중 문제가 발생했습니다. 사소한 실수였고, 다시 반복하지 않고자 기록을 남깁니다. 우선 개발 서버의 배포 과정은 다음과 같습니다. ec2에 docker 환경 구성 ec2에서 MySQL 컨테이너 실행 로컬에서 spring boot 프로젝트 clean build > docker image로 만들어 docker hub에 push ec2에서 docker hub에 올린 이미지를 컨테이너로 만들고 실행 (docker run -d -p 8080:8080 [환경변수들] [hub계정명]/[이미지명]) 이렇게 수동으로 웹 애플리케이션 서버..
프로젝트의 배포환경을 구성하고 발생한 오류입니다. 로그인 후 JWT를 이용해 인증된 사용자의 접근만 허용하는 로직을 호출했을 때 다음과 같은 로그를 남기며 500 에러가 발생했습니다. 서버 단부터, 배포 단계까지 점검하면서 겨우 문제를 해결할 수 있었습니다. 굉장히 사소한 부분에서 발생한 문제였기 때문에 이번 같은 실수를 반복하지 않고자 해결 과정을 기록하려고 합니다. 구현한 인증, 인가 기능 및 배포 환경 인증, 인가: Spring boot, Spring Security + JWT 배포: AWS route53, cloudFront, EC2 저는 사용자의 인증, 인가를 Spring Security와 JWT로 구현했습니다. 로그인을 하면 사용자의 정보는 SecurityContext의 Authenticati..
지난 2월, 유튜브 숏츠를 보다 갑자기 영어회화에 대한 자극을 받았습니다💥 오래전 봤던 토익은 기간이 만료됐고, 선택과 집중이라는 핑계로 어학성적을 외면하고 있었는데요, 불현듯 몰려오는 위기감과 영어회화에 대한 흥미가 더해져 오픽 준비라는 호기로운 결정을 내리게 됐습니다.그렇게 저에게 2주라는 시간이 주어졌습니다. 하루 3시간 정도 준비했고, 시험은 철저하게 준비했다기 보다는 약간 기세(?)로 치렀던 것 같습니다. 첫 시험이라 미흡했다는 예상과 다르게 참 과분한 성적을 받은 것 같네요. 대단한 점수는 아니지만, 부족한 점을 보완하면서 누군가에게 도움이 될 수 있을 것 같아 학습했던 내용을 회고하고, 공유하려 합니다. 시험 준비 전 제 역량은 아래와 같았습니다. - 해외 경험 X- 단어를 검색하면 문장..
부트캠프 종료 후, 이력서 작성에 많은 도움을 주셨던 Kahye Jung, Aaron 두 분께서 현직자 세션에 초대해 주셨습니다.😀 현직에 계신 분들의 경험을 듣고, 그분들의 인사이트를 얻는 것은 참 감사한 일인데요, 이번 세션에는 두나무 ios개발자 혜준 님과, H2O Hospitality Backend 개발자 유진님께서 다양한 전략과 경험을 소개해 주셨습니다. 세션은 주관 플랫폼인 프라임닷의 소개와 멘토님들의 강연, QnA 순서로 진행되었습니다. 각 세션에서 얻은 인사이트를 간단하게 요약해서 정리해보고자 합니다. 두나무 ios 개발자 '혜준'님의 세션 첫 번째 세션에서는 두나무에서 ios 개발자로 일하고 계시는 혜준 님의 이야기가 소개됐습니다. 혜준 님은 다양한 기업을 거친 뒤 두나무에 입사해 기업의..
개발환경 - java17 - spring boot 3.2.0 - spring data JPA - Gradle 8.5 - MySQL 진행 중인 프로젝트에서는 회원의 탈퇴 여부를 soft delete로 구현했습니다. 서버가 클라이언트로부터 회원탈퇴 요청을 전달받으면, 실제로 테이블에서 해당 회원을 삭제하지 않고 boolean 타입의 deleted 칼럼으로 삭제 여부를 저장했습니다. @Column(name = "deleted") @ColumnDefault("false") private Boolean deleted; 또한 회원과 관련된 sql 생성 시 where절을 통해 deleted 칼럼이 0(=false)인 경우만 조회할 수 있도록 select 조건을 제한했습니다. @SQLDelete(sql = "UPDAT..
프로젝트를 진행하면서 본격적으로 프런트엔드와 협업을 시작하기 전에 ngrok을 이용해 외부와의 통신이 원활하게 연결되는지 테스트했습니다. 그 과정에서 겪은 문제를 기록해보려 합니다. 오류가 있다면 피드백 부탁드립니다!😂 개발환경 - java17 - spring boot 3.2.0 - spring security 6.2.1 - Gradle 8.5 문제 프론트엔드 측에서 요청을 보내자 403(Forbidden) 상태코드가 반환되었습니다. 접근 권한 문제인 것 같은데요, 프런트엔드 팀원에게 물어보니 응답 헤더에 "Access-Control-Allow-Origin"이 누락되어 pre-flight 요청이 실패되는 것 같다는 답변을 받았습니다. (pre-flight란? https://velog.io/@cloudle..
새해를 맞아 첫 글을 씁니다. 기존에 사용하던 블로그를 벨로그( https://velog.io/@11dy/posts )에서 티스토리로 이전했습니다. 다양한 활동 기대해주세요!