프로젝트
들어가며Tweaver 기능 중에는 OAuth2 기반의 소셜로그인 기능이 있다. 본 프로젝트에 해당 기능을 넣게된 계기와 마주한 상황, 그리고 어떻게 해결했는지를 기록하려 한다. 기대점과 문제점Twaver는 다양한 사람이 만나 당일치기 여행을 계획하는데에 도움을 주는 서비스이다. 서비스 이용자는 당일치기 여행을 계획하는 사람을 찾기 위해 빠르게 서비스에 접근할 수 있어야 한다. 따라서 이용자가 손쉽고 간편하게 서비스에 접근할 수 있게 소셜 로그인 기능을 추가했다.동작과정을 학습해볼겸, 다양한 소셜로그인을 구현하기 전에 먼저 카카오 로그인만 구현해보기로 했다.소셜 로그인을 구현하기 위해 Spring Security와 OAuth2를 이용했다. 여기서 필수적으로 고민해 볼 것은 프론트엔드와 백엔드의..
들어가며 Tweaver 프로젝트의 서버 작업을 하던 도중 서버가 멈추는 상황이 발생했다. 프로젝트를 같이 진행한 백엔드 개발자 한 분과 함께 화면을 공유하며 페어 프로그래밍을 진행했다. 그 과정을 기록하고자 한다. 문제 상황 EC2에 접속 후 docker run... 명령을 실행했다. 동작은 잘 됐고 로그도 잘 뜨는 걸 확인했다. 하지만 몇 초 뒤 이상증상이 발생했다. 각자 로컬환경에서 해당 서버로 접속한 뒤 각자 문제를 파악했다. 화면을 공유하며 정리한 증상은 다음과 같았다. EC2 서버내 docker를 이용해 컨테이너를 올린 후 몇 초뒤 서버가 느려진다. HTTP 접속을 해도 응답을 해주지 않았다. 느려지고 난 뒤에는 다른 사용자가 EC2 서버에 SSH 접속을 해도 오랜시간 기다려야 한다. 첫 번째 ..
들어가며 Tweaver 기능 중에는 OAuth2 기반의 소셜로그인 기능이 있다. 본 프로젝트에 해당 기능을 넣게된 계기와 마주한 상황, 그리고 어떻게 해결했는지를 기록하려 한다. 문제점 원래 다르게 썼었는데 이 글을 수정해서 https://eod940.tistory.com/53 이 링크의 글로 만드려다가 기록이 유실되었다. ㅠㅠ 부끄러운 기록이어도 그냥 냅두자! ... 처음에는 SecurityConfig에서 CorsConfiguration 설정을 전체 허용으로 바꿔주었다. 하지만 동일하게 문제가 발생했다. 그래서 나는 프론트의 kakao login을 담당하는 코드를 분석해봤다. https://devtalk.kakao.com/t/rest-api-cors/114424 글을 참조했다. 비동기 방식으로 호출하면..
들어가며 테스트를 실행하면서 겪었던 일들에 관해 기록하려 한다. 회원가입 코드는 [그림1]과 같다. 우선 회원가입 기능은 다음과 같다. 회원가입시 프로필 이미지를 등록할 수 있다. 회원가입시 이메일이 유효한지 검증해야 한다. 위의 기능을 만족하는 회원가입 기능을 만들기 위해 테스트를 진행해보아야 한다. 2번 이메일 검증의 경우 이메일로 코드를 보내 확인하는 로직이 존재하기 때문에 기본적인 이메일 형식 유효성 검증만 하면 될 것 같다. 문제 상황 회원가입을 어떻게 테스트할 수 있을까? 우선 회원가입로직은 [그림2]과 같다. 요청이 들어오면 Email형식이 맞는지, 프로필 사진이 있는지 확인 후 DB에 저장하는 식으로 진행된다. 따라서 회원가입 테스트는 두 부분을 확인하는 방향으로 가면 된다. 첫 번째는 이..
들어가며 안녕하세요 백엔드 개발자 이대영입니다. 본 글에서는 Tweaver 프로젝트에서 SSE 기능 도입중 발생한 Connection is not available 에러의 해결 과정을 기록하려 합니다. 해당 에러는 HikariCP의 Connection 고갈 문제였습니다. 힘들게 찾고 간단하게 해결했던 상황을 공유하며 성장의 발판이 되었으면 합니다. 문제 상황 Tweaver 프로젝트에서 SSE로 알림을 구현하고 서버에 적용했습니다. 로그인 이후 사용자가 SSE에 연결이 되면 저장된 알림 모두 사용자에게 갈 수 있게 구현해놓았습니다. 하지만 구현 직후, 사용자가 로그인을 한 뒤 SSE가 연결되면 몇 초 뒤에 서버가 멈춰버리는 상황이 발생했습니다. ec2에 접속해 로그를 확인해 보니 [그림1] 과 같이 Con..
들어가며 안녕하세요 백엔드 개발자 이대영입니다. 이 글에서는 Spring Cloud의 Open Feign 기능을 도입했던 과정을 소개하려 합니다. 본 글은 부족했던 시간 속에서 팀원들과 공동의 목표를 이루어 나가기 위한 과정을 공유합니다. 뿐만 아니라 경험을 기록함으로써 성장의 발판이 되었으면 합니다. 배경 및 목표 Tweaver 서비스에서는 이메일 인증 기능을 통해 서비스 사용자의 최소한의 신원을 확인하려 합니다. 휴대폰 본인 확인, 이메일 인증 정도를 생각해 봤는데요. 솔직히 말하자면 이메일 인증이 조금 더 쉬울 것 같아 이메일 인증을 도입하기로 하였습니다.😅 이메일 인증 도입을 위해서는 2가지를 생각해 볼 수 있었습니다. 1. 직접 SMTP 서버를 구축한다. - 구축에 시간이 오래걸릴 수 있다. -..
1. Put과 Patch 메서드 차이 2. 링크 클릭시 PATCH? GET? verifyEmail 로직 자체가 verify 컬럼을 수정해주기 때문에 별도의 body 내용이 필요 없다. 또한 메일로 링크를 보내기 때문에 별도의 http 메서드 처리가 필요 없을듯 하다. 3. @Treansaction을 붙이는 이유 - [ #3 ] PR 리뷰 4. "A problem occurred evaluating root project..." 에러 해결 - 모듈 생성시 그냥 New Module로 생성. gradle 확인시 cms 하위에 들어가 있어야한다. (하위, Flat 둘 다 있으면 Flat한거 삭제해야 한다.)
1. jsoup.org/apidoc 에서 확인 후 가져오기 2. www.w3.org/Protocols/rfc2616/rfc2616-sec5.html 에서 HTTP 메서드 약속들을 찾아볼 수 있다. 여기서 메서드 설명을 읽어봐야 한다. 변경( https://www.rfc-editor.org/rfc/rfc9110.html#name-method-definitions ) 3. api 설계 과정 자체가 중요하다. 왜 이렇게 설계했고 왜 이런 라이브러리를 갖고 왔는지? 등 대답할 수 있어야함. 4. Controller → persist 패키지 생성 → persist 아래에 Entity 생성 5. Company Entity를 사용하지 않고 모델 클래스를 따로 정의해준 이유? 6. @Data, @Builder 7. J..