[Twitter Clone] 트위터 클론 프로젝트 회고

Sierra·2023년 1월 2일
0

Twitter Clone Project

목록 보기
1/4
post-thumbnail

Intro

12월 한달 간 심플한 프로젝트를 하나 진행 해 보았다.
트위터 클론코딩 수업을 과거에 노마드코더 사이트에서 수강하였고, 해당 프로젝트에서 파이어베이스로 처리했던 백엔드를 백지부터 모두 개발 해 보자는 게 이번 프로젝트의 목적이었다.

https://nomadcoders.co/nwitter

관심이 있다면 꼭 수강해보길 바란다. 너무 혜자스러운 무료 강의 아닌가.

바쁜 와중에 조금이라도 좋으니 배웠던 기술들을 직접 트위터의 기능들을 구현 해 보면서 다시 정리 해 보자는 목적, 그리고 아예 백지부터 개발 해 보고 싶다는 욕구로 인해 시작 된 프로젝트였다. 그렇게 대단한 기능들을 구현 한 것은 아니다. 사실 정말 기초적인 기능들이지만 최근 1년간 백지부터 프로젝트를 제대로 해 본게 몇 번이나 있었는 지 기억이 잘 나지 않는다는 건 개발자로써 좀 부끄러워 해야 할 게 아닌가 싶었다.

1년차도 되지 않은 사람이지만, 그래도 프로젝트의 시작과 끝을 어디까지 진행할 수 있는 지 스스로를 시험 해 보고 싶었다. 한달 간의 데드라인을 잡고 프로젝트를 진행하였다. 프론트엔드, 백엔드 할 것 없이 모든 시스템을 혼자 설계하고 개발하며 배우는 게 가장 빠르다 생각하였고 내년에는 좀 더 성숙한 개발자가 되고 싶었던 마음이 정말 컸다.

Tech Stacks

  • API Server
    • Spring Boot 3.0.0
    • Open JDK 17 (Kotlin)
    • MariaDB
    • Redis
  • Web Client
    • React.js
    • Typescript

그 외에 Docker 를 통해 각 환경들을 컨테이너화 시켜서 작동 시켰고 CDN으로 Nginx 기반 웹 서버를 활용하였다.

Features

  • 이메일 회원 가입
  • 트윗 CRUD
  • JWT 기반 인증 및 인가
  • 회원 정보 수정

우선 강의에 나오는 모든 기능들을 구현 해 보는 게 목표였다. 단, 모든 백엔드는 직접 개발해야 했다.

개발 기간

실 작업 기간은 2주에서 3주 정도 걸린 것 같다. JWT Authentication을 구현하다 꽤나 애를 먹었다. 처음 해 본건 아니다. 그저 리프레쉬 토큰에 대한 처리를 어떻게 해야할 지 고민하다보니 시간을 많이 소모하였다.

사실 계획 된 기능이 저것만 있는 것은 아니었고 작업도 진행중이었으나, 일단 배포환경을 빨리 구축 해 보자는 생각에 현재 작업은 멈춘 채 일단 배포 환경으로 넘어갔다.

개발 및 배포 환경

최대한 심플하게 개발하잔 생각으로 진행하였다. 로컬 환경에서 Docker를 통해 Redis, MariaDB등의 환경을 빠르게 구축하였고 배포 환경에서도 Docker Compose를 통해 로드밸런서 겸 프록시 서버 Nginx, CDN 역할을 하는 Nginx와 API 서버를 연결 시켜두었다.

IntelliJ Ultimate 환경에서 API 서버 및 어드민 서버 프로그래밍을 진행하였고 Typescript + React 환경은 VSC를 활용하였다.
또한 Google Cloud Platform를 통해 백엔드 운영 및 배포를 진행하였고 클라이언트는 netlify를 활용하여 배포하였다.

배운 점

Cookie를 컨트롤 하는 방법들에 대해 많은 것을 배웠다. JWT 토큰 인증 방식을 공부 목적으로 구현은 해보았으나 제대로 이해하고 있던 건지 의문이었는데 백지부터 개발 하면서 Spring Security 관련 지식들도 많이 늘었다. 가장 많이 는 건 서버 애플리케이션을 설계하는 방법들이었는데, 혼자서 개발하다보니 기존 현업에서 비즈니스 로직을 추가하는 정도 보다도 더 많은 것을 고려해야했다.
에러 처리또한 기존에는 void 형태의 함수도 많이 사용하였다면, 이제는 꼭 리턴타입을 둬서 에러 처리하는 데 반영하였고 @ControllerAdivser 를 통해 전역 에러 처리를 함으로써 클라이언트 상에서 에러 코드 전체를 확인하지 못하도록 보안적인 이슈 또한 처리하였다.

또한 Kotlin 을 꽤나 많이 공부하게 된 것은 덤이다. 개인적으론 코프링이 대세라곤 하지만 개발 난이도의 차이는 없는 것 같다....

실제 배포 환경을 백지부터 구축 해본 것도 처음이었다. 기존에 누가 배포를 진행하였고 난 코딩만 하였다면 이건 개인 프로젝트니까 정말 개인적으로 모든 걸 해결해야 했다. 기술을 선택하는 방향은 내가 맘대로 해도 되었지만, 그 만큼 내가 모든 것을 판단해야 했기에 어려움이 있었다.

작은 프로젝트지만 하나의 큰 사이클을 혼자 경험 해 보면서 놓쳤던 부분들, 몰랐던 부분들을 다시 찾게 되었고 덕분에 한층 더 성장하였다고 생각한다.

Outro

개발하면서 해결했던 문제들에 대한 포스팅이 계획 되어있다. 사실 시간이 그리 녹록치 않아서 당장 배포한 기능들은 그리 대단한 게 아니지만, 백엔드를 개발하다보면 반드시 마주치게 되는 여러 문제들에 대해 어떻게 해결했는 지 정리할 겸 포스팅을 할 예정이고 이미 꽤 많은 주제들이 선정 되어있다.

2022년이 튜토리얼이었다면 2023년은 실전 위주로 글을 쓸 예정이다. 곧 돌아오겠다.

profile
블로그 이전합니다 : https://swj-techblog.vercel.app/

0개의 댓글