정말 미친듯이 몰입했던 프로젝트였다.
많은 공을 들였고, 최대한 이해하고 적용하려다 보니 시간도 오래걸렸다.
그나마 다행인건 애초에 우리 팀이 계획했던 시간보다 빠르게 완성했다.
팀원들의 결속력이 빛이 났던 순간이었다.
프로젝트 초반에 어떠한 프로젝트를 만들것인지 논의를 했었다.
논의를 한 협업 툴은 Slack을 주로 사용하여 논의를 했다.
그 중에 여러 의견이 오고갔던 찰나, 검색을 할 수 있는 위키에 기여를 할 수 있는 사이트를 만들어보자는 의견이 나왔다.
나도 나름 흥미가 생기는 주제였었고, 다른 팀원들도 긍정적인 피드백을 보여주었다. 첫 단추부터 순조로웠다.
큰 주제가 정해지다 보니 순차적으로 결정 해야하는 것 들을 결정해 나아갔다.
프로젝트 이름을 아무위키라고 정했는데 깨알 PR을 하자면, 내가 제안한 이름이다.
모두가 동의하고 좋은 이름이라고 긍정적인 피드백을 주었었고 우리 팀원들에게 고마웠다.
프로젝트 이름을 정한 후에 팀장을 정했는데, 사실상 팀장은 이미 정해진 상태였고 어느정도 큰 프로젝트이다보니, 부팀장이 필요했었다.
팀장으로 정해진 정붕기 팀원이 나를 부팀장으로 임명하였고, 우리 팀원들의 의사 소통 혹은 본인이 팀장 역할을 하며, 놓친 부분이 있는지
확인 해가며 팀장일에 있어서 부족한 부분을 같이 매꿔나가주는 역할을 하였으며, 무언가를 제작해야되는 부분
(아키텍쳐, 와이어프레임, 로고제작(ico))이나 DB관리하는 작업 또는 연결 모두 내가 맡아서 하게되었다.
돌아보니 우리 팀에 좋은 영향을 준 것 같아서 나름 뿌듯하다.
개발은 내가 첫 단추를 시작했다. 가장 먼저 기본 발판이 될 회원가입, 로그인, 로그아웃 부분을 구현하기 시작 하였고 생각보다
빨리 개발이 완성 되었다. 나머지 파트인 Profile 파트, Post 파트도 내가 완성이 되어야 차용해서 프로그램 제작을 할 수 있었기에
서두른 감도 없지 않아 있었다. 하지만 몇번을 걸친 리팩토링과 더 나은 선택을 해가며 수정하다보니,
내 기준에서는 만족스러운 결과물이 나왔다.
그러고 나서 어느정도 틀을 만들고 나머지 팀원의 (프로필, 포스트) 부분을 제작하는 것을 도와주었다.
팀원들과 많은 의견을 나눴고 내가 작성한 코드를 리뷰해주면서 차용할 수 있는 부분은 내가 제안해주고 협력 해 나아갔다.
CRUD 파트가 어느정도 완성되다보니, 이제 필요한건 더 가벼운 controller와 보안이었다.
가벼운 controller를 만드는건 크게 어렵지는 않았다.
추가적으로 생각해 낸건 email 계정에서 인증을 받아 보안을 한층 더 업그레이드 시켜주자는 의견을 내었었다.
다행히도 email 계정을 이용한 계정인증 로직은 성공적이었고 쉽게 회원가입을 하는 로직을 막아 무분별한 회원가입은 막아주고 ,
추후에 만들어질 회원탈퇴 혹은 비밀번호 변경도 해당 가입 이메일을 소유하고 있고 이메일을 확인할 수 있어야만 비밀번호를 변경할 수
있는 로직을 만들어줬다.
물론 간단하지는 않았다. 많은 시행착오가 있었고. 여러번의 Refactoring이 있었다. 하지만 몇번의 손을 거친 뒤에는 아주 만족스러운 보안
이 완성되었다.
에러 핸들러를 프론트 엔드쪽에서 만들어주고 무분별한 가입이나 버그들을 막아줄 수 있었겠지만, 더 좋은 보안을 만들기 위해서
백엔드에서도 한번 더 막아주자는 생각으로 백엔드에도 추가했으며, 모든 에러 핸들러에 Try catch 문으로 작성하지는 않았고
가장 큰 handle service에 만 try catch문을 적용해주었고 안에 If 문으로 Error를 걸러주게 만들었다.
뒤 늦게 try catch 문으로 만들어 준 이유는 이후에 한번 더 말하겠지만, 프론트엔드와 합치면서 생긴 소통에 부재가 있었다.
우리팀은 원래 챌린저스 팀으로 프론트엔드가 없는게 맞지만, 팀원들중에 프론트엔드 작업이 가능한 지인이 있는 관계로 같이 프로젝트에
합류 하기로 했다.
하지만, 프론트엔드 담당 멤버가 늦게 합류하는 바람에 앞단에서는 어떻게 보여지는지 정확하게 확인할 겨를이 없었다.
포스트맨으로만 확인할 수 있었던 대 참사였다.
분명 If로 걸러주지만 Try catch 문으로 에러로 반환하지 않다보니 프론트엔드 쪽에서는 이게 400 StatusCode인지
200 statusCode인지 확인할 수 있는 방법이 없다는 것이었다.
그래도 정말 다행인것은 이번 일을 계기로 내가 알게된 점이 있다는것이다.
첫째 프론트엔드와의 소통의 중요성,
둘째 백엔드에서 할 수 있지만 프론트엔드 영역의 에러 핸들러도 있다는 걸 인지한 점,
셋째 StatusCode를 굳이 Response 할 필요가 없다는 점.
넷째 백엔드 개발자도 프론트엔드 개발에 있어서 어느정도 대략적인 방법이라도 숙지를 하고 있어야한다는 점.
이 네개의 교훈을 통해 한층 성장할 수 있는 계기가 되었다.
이 모든 소통의 부재를 해결하고 나서 마지막으로 해결할건 Fastify를 활용한 Response 와 Request였다.
우리 팀의 주제는 빠른 검색과 보안이었는데,
보안은 내가 맡은 파트에서는 최대한으로 해내었고 빠른 요청과 빠른 반응이 필요했다.
Fastify는 무척 빨랐다. 원래 기존에 쓰던 기반보다 개인적으로 느낀거지만, 더 안정적으로 느껴지기까지 했다.
Fastify를 입히는 것 까지 완료하고 나니 내 파트에서는 더이상 고칠게 없을 줄 알았다.
아무튼 나중에 고치는 부분은 추가적으로 얘기하기로 하고, 이제 서버 구축을 할 단계였다.
어느정도 애플리케이션쪽은 완성하고 나니 CI/CD와 AWS EC2구축, Nginx설정 등 할게 더 많아진 느낌이었다.
그래도 미니 프로젝트와 클론 프로젝트를 통하여 여려번 시도하고 시행착오를 겪어서 그랬는지
빠른 시간안에 안정적으로 구축을 완료하였다.
제일 처음에 나는 정붕기 팀장과 함께 Docker-compose를 제작하였다 나는 yml파일을 만들어 나갔고,
우선 composing해서 이미지 build 되는게 성공하는 것 까지 확인했다. 그것과 연계하여
나는 이기웅 팀원과 함께 github Actions를 만들어 나갔다.
백엔드와 프론트엔드 서버를 compose해서 그대로 하나의 image로 빌드해 docker hub로 보내는 것 까지
github Actions로 만들어주었다. 그 다음 그 이미지를 pull 받을 수 있는 2개의 서버 컨테이너를 만들 수 있게
가상 컴퓨터 EC2를 설정할 차례가 왔고 조현수 팀원과 나는 EC2를 만들기 전에 VPC를 설정하여 보안을 강화하고
subnet을 만들어 네트워크를 설정해 주었다. 총 세개의 EC2에 VPC를 씌운 상태로 만들어주고,
Nginx를 통하여 로드밸런싱이 가능하게끔 인바운드 규칙에 각자의 프라이빗 IP를 추가적으로 넣어주었다.
그 다음으로는 Nginx를 통한 로드밸런싱을 위해 Nginx의 conf파일을 수정해주었다.
vim은 여러번 다뤄봐서 어느정도 익숙해진 상태였다. 로드밸런싱까지 확인해 주고, 나머지 두개의 Ubuntu에도 docker와
Nginx를 설치하고 넣어주었다. 물론 docker-compose까지 설치해주었다 docker에서 docker-compose로 build된 이미지는
docker-compose를 컨테이너 화 시키기 위해서는 설치가 필요하다.
자세하게 어떤 문제를 고치고 해결해나아갔는지는 다른 게시글에서 설명할거니 패스하고,
2023.03.27 - [[𝐃𝐞𝐯𝐞𝐥𝐨𝐩] 실전 프로젝트] - [실전 프로젝트] 이번 프로젝트에서 발생한 문제점들과 내가 해결해 나간 방식
서버구축까지 완료하고 배포를 했는데, 이메일이 검증될 때 두번 눌러야 검증이 되는 오류가 발생하였다.
물론 이 부분도 자세한건 다른 게시글에서 설명하겠지만, 이 모든 오류를 최대한 빠른시간안에 파악하고
어떠한 방법으로 해결해 나아갈지에 대한 결정도 최대한 빠르고 올바른 방법으로 해결했다는거다.
정말 뿌듯했다.
마지막으로 생긴 서버 구축 문제는 배포하고 나니 https가 가능하게끔 enabling 해줘야 하는데 서로 다른 지역의 VPC로 설정이
되어있어야 한다는 점이 걸림돌이 되었다.
그래서 나는 무료로 제공받을 수 있는 https certificate를 검색해서 찾아냈고 그 인증서를 제일 앞에있는 Nginx에 넣어주면서
해결이 되었다.
우리 팀원들도 여기까지 같이 노력해오면서 많이 도와주고 같이 밀어주는 관계가 되어서 더 돈독해지고
서로 힘이되는 관계가 된 것 같았고.
프로젝트가 진행되면서 어느정도의 의견충돌이 있을 수 있는데 좋은 방향으로 예쁜말로 소통하며, 해결해 나아갔다는 점도
무척이나 만족스러웠다.
결과적으로 결과물이던, 과정이던 모두 만족스러웠다는거다.
앞으로 내가 취직해서도 이렇게 팀원들과 건강한 의사소통을하며, 좋은 개발자로 거듭났으면 하는 바람이있다.
정말 뜻 깊고, 크게 성장할 수 있는 시간이었고 개발자라는 직업에 한발짝 더 가까이 갈 수 있는 시간이었던 것 같다.
지금까지 긴 글 읽어주셔서 감사합니다.
'⭐ 𝐩𝐫𝐨𝐣𝐞𝐜𝐭𝐬 > 회고' 카테고리의 다른 글
[실전 프로젝트] 이번 프로젝트에서 내가 기여한 부분 (0) | 2023.03.29 |
---|