[WIL 7주차] 240318~240324

Dyong_Song·2024년 3월 24일
0
post-thumbnail

✏️  항해 7주차, 클론코딩

🗓️   지난 이야기

이번 주는 당근마켓의 클론코딩을 진행했습니다. 첫 협업 때 못해본 채팅 기능에 도전해보고 싶었고, 프론트에서도 무한 스크롤을 연습해보기 좋을 것 같았기에, 당근마켓을 클론코딩 사이트로 정했습니다.

첫 협업에서는 이미지를 포함한 기본적인 CRUD만 했기 때문에, 큰 어려움이 없었습니다. 기존에 과제를 통해 해왔던 내용들이 반복되었고, 이미지를 업로드하는 기능만 추가되었습니다. AWS를 통해 서버를 배포하고, HTTPS로 바꾸는 일이 더 큰 과제였다고 생각합니다.

클론코딩을 진행하면서, 생각해야 할 것들이 더 많았습니다. 첫 번째로, 회원가입이 비밀번호를 입력하지 않고, 이메일 혹은 전화번호에 인증번호를 전송하는 방식을 사용하고 있었습니다. 이를 구현하기 위해, CoolSMS와 JavaMail과 같은 라이브러리를 도입해야 했습니다. 추가로, 전송된 인증번호와 해당 이메일 혹은 전화번호를 임시로 저장해야 할 곳이 필요했고, Redis에 대해 공부해야 했습니다.

두 번째로, 로그인 역시 인증번호 방식을 사용하고 있었습니다. 기존에 Security 단에서 Username과 password를 받아서 인증하던 방식이 아니었기 때문에, Redis를 다루는 클래스를 가져와서 사용해야 했습니다. 해당 과정에서 문제가 해결되지 않아서, Service 단에서 유저의 정보를 확인했고, 토큰을 생성했습니다. 이 부분은 반드시 리팩토링을 거쳐서 수정해야 할 것 같습니다. (매니저님에게 질문하여, 가닥이 잡힌 것 같습니다.)

세 번째로, 당근마켓은 위치 기반 게시글을 검색해야 했으므로, 회원 가입시 주소 정보를 검색하는 기능이 필수였습니다. 주소 검색 API를 사용하기 위해, 외부 API와의 통신을 위한 라이브러리인 RestTemplate를 사용해야 했습니다. 덕분에 RestAPI에 대한 공부도 다시 할 수 있었습니다.

이번 클론코딩은 내가 기존에 아는 내용만 활용해서, 아는 부분까지만 구현하고 있었다는 사실을 인지하게 만들어줬습니다. 어떤 서비스를 구현할 때, 필요한 부분이 무엇인지, 그리고 서비스를 구현하기 위해 어떤 기술들이 필요한지에 대해 고민해볼 수 있었습니다. 덕분에 프로젝트의 주제에 대해 더욱 깊고, 풍부하게 생각할 수 있었습니다.

📚  배운점

  • Redis와 JavaMail, CoolSMS를 활용한 회원가입 전화번호, 이메일 인증 기능 구현
  • AWS S3 업로드 인터페이스를 통해 이미지 업로드 (Naver Object Platform)
  • 카카오 주소 API를 통한 주소 검색 기능 추가
  • 이미지 수정 로직 구현 (혼자 로직을 생각하며 코드를 구성했더니, 굉장히 지저분하고 알아보기 어려움)
  • HTTPS 전환 (AWS Route53) 정리글
  • 좋아요 기능과 DB 조회에 대한 공부
  • 협업을 통해 Response 형식과 예외처리에 대한 중요성 인식 + API 명세서
    + 스웨거의 소중함 (노션 API 명세서 나중에 수정하려니까, 너무 힘들었다...)
  • 회원가입이 기존에 사용하던 UsernamePassword 인터페이스가 아니라, 다른 방식으로 구현

🔥  다음 주 계획

  • CI / CD: 젠킨스, 깃허브액션, 도커 등등
  • 네트워크: VPC, 서브넷, 로드밸런서 등등
  • WebSocket 채팅기능 공부 (레거시 프로젝트 돌아보기)
  • MapStruct 방식으로 객체 매핑
  • QueryDsl
  • Let's Encrypt
profile
꾸준한 개발자가 되자! Do steady yong

0개의 댓글

관련 채용 정보