서론
- 7/23 ~ 9/3의 실전 프로젝트가 진행 중입니다.
- Node.js 클론코딩 코드리뷰가 진행되었습니다.
- 디자이너 회의가 진행되었습니다.
- 디자인 와이어 프레임이 일부 구성되었습니다.
- 담당 매니저님과 이범규 대표님의 팀 면담이 진행되었습니다.
- 팀장 주간 회의가 진행되었습니다.
- 1:1 토요 멘토링이 진행되었습니다.
일정
- 7/23 (금) ~ 9/3 (금) : 실전 프로젝트 진행
- 8/03 (화) 19:00 ~ 21:00 : Node.js 클론코딩 코드리뷰
- 8/04 (수) 20:30 ~ 21:30 : 디자이너 회의
- 8/05 (목) 12:30 ~ 13:30 : 이범규 대표님 팀 면담
- 8/06 (금) 12:30 ~ 14:00 : 팀장 주간 회의
- 8/07 (토) 20:00 ~ 22:10 : 1:1 토요 멘토링
실전 프로젝트 3주 차
- 7/23 ~ 9/3 : 실전 프로젝트 3주 차 진행 중입니다.
- Kakao Map API를 이용해 위치를 표시하는 실시간 Socket 통신을 프론트 엔드와 연동하였습니다.
- Kakao Map API를 이용해 현재 주소와 위도, 경도를 표시하는 HTML을 구현하였습니다.
- Socket 대화방을 프론트 엔드와 연동하였습니다.
- AWS EC2에서 MySQL 백업을 위한 설정을 하였습니다.
- AWS SES를 이용한 인증 메일 발송 API를 구현하였습니다.
- Swagger를 사용해 API 문서를 쉽게 이해할 수 있도록 구성하였습니다.
- Jest, Supertest를 이용해 API 테스트 코드를 작성하였습니다.
- HTTPS 보안 프로토콜을 적용하였습니다.
- Crontab을 이용해 인증서를 정기 갱신하도록 설정하였습니다.
- Crypto를 이용해 인증 메일, 비밀번호를 암호화하였습니다.
- Morgan 모듈을 이용해 Server 로그 작업을 추가하였습니다.
- BlackList 테이블이 추가되어 DB ERD가 수정되었습니다.
- API 문서에서 Socket API 페이지가 추가되었습니다.
- Notion : https://www.notion.so/99-9-b3c6d3acc4cd489d8abda6c0b7f3c714
Node.js 클론코딩 코드리뷰
- 8/03 (화) 19:00 ~ 21:00 : Node.js 클론코딩 코드리뷰를 진행하였습니다.
- Node.js 담당 튜터님이 코드리뷰를 진행해주셨습니다.
- 코드리뷰의 모든 내용이 클론 프로젝트 때 작성하였던 저의 tumblrClone 프로젝트를 저격하였습니다.
- Raw Query보다는 ORM을 사용하는 것이 올바르다고 하였습니다.
- TRIGGER, PROCEDURE, FUNCTION을 MySQL에 저장하지 않고, ORM으로 사용하라 하였습니다.
- 여러 Router에서 사용하는 함수들은 Model에 저장하는 것이 효율적이라 하였습니다.
- Scale Up, Scale Out 개념에 관해 이야기하였습니다.
멘탈 관리
- 8/04 (수) : 담당 매니저님과 면담을 진행하였습니다.
- 8/05 (목) 12:30 ~ 13:30 : 이범규 대표님과 팀 면담을 진행하였습니다.
- 실전 프로젝트가 진행되면서 2주간 팀장으로서 많은 부담감을 안고 있었습니다.
- 프로젝트의 방향성, 진행 속도에 대한 해결방안과 모든 업무가 저에게 몰려있는 현 상황을 해결하기 위해 상담을 받았습니다.
멘탈 관리 이야기
- 실전 프로젝트를 진행하면서 '프로젝트가 성공할 수 있을까?'라는 조바심을 느끼고 있었습니다. 처음 프로젝트를 진행했을 때 원하는 그림과 현재까지 진행된 프로젝트의 진행 상황에서 많은 차이가 있었고. 이런 부분이 조절되지 않는 것에서 많은 스트레스를 받았습니다.
- 프로젝트의 모든 업무가 팀장에게 몰렸습니다. 백 엔드와 프론트 엔드 모든 코드에서 논리적인 구조를 작성하는 것과 구현을 하던 도중 막히는 것들이 모두 저에게 몰렸습니다. 저 또한 구현해야 할 API 문서와 기능들이 존재하는데 담당하는 API 기능을 구현하는 것 보다 전반적인 팀 프로젝트를 위해 시간을 할애하는 경우가 많았습니다.
- 프로젝트를 진행하면서 점점 의욕과 목표 의식이 줄어들었습니다. '진행하고 있는 프로젝트의 방식이 맞는가?', '현 상황대로 계속 모든 부담을 혼자 끌고 가야 하는가?' 등 많은 생각이 들기 시작하였고, 시간이 지날수록 점점 더 부정적인 생각이 늘었습니다. 이대로 계속 혼자 마음속에 담아놓는 것보다 외부에서 보는 객관적인 시각이 필요하다 생각하였고, 담당 매니저님과 이범규 대표님에게 면담을 신청하였습니다.
- 담당 매니저님과 이범규 대표님에게 상담을 받으면서 부정적인 마음이 많이 사라졌고, 목표 의식이 생기기 시작하였습니다. 프로젝트의 진행 상황에서 많이 낙담하고 있었는데 다른 팀들의 진행 상황과 객관적인 시각에서 저희 프로젝트가 디자인을 제외하고 기본적인 MVP 기능이 구현되어있다는 점과 백 엔드와 프론트 엔드가 협업해야 하는 API는 거의 남아 있지 않다는 것을 깨달았습니다. 가장 힘든 구간을 지나오면서 겪었던 스트레스였기 때문에 남은 업무들을 적어보면서 딱히 어렵지 않겠다는 태평한 마음가짐을 얻을 수 있었습니다.
디자이너 회의
- 8/04 (수) 20:30 ~ 21:30 : 디자이너 회의를 진행하였습니다.
- 와이어 프레임의 진행 상황에 대해 이야기하였습니다.
- 메인페이지, 로그인, 회원가입 페이지가 구현되었습니다.
- 8/07(토) 모든 디자인 와이어 프레임이 제공될 것입니다.
팀장 주간 회의
- 8/06 (금) 12:30 ~ 14:00 : 팀장 주간 회의가 진행되었습니다.
- 이범규 대표님이 회의를 진행하였습니다.
- 5, 6, 7, 8, 9, 16, 17, 18 저희 팀을 제외하고 7팀의 프로젝트 진행 상황을 확인하였습니다.
- 배포한 프로젝트를 시연하면서 기획과 현재까지 구현된 기능들에 대해 공유하였습니다.
- 저희 팀의 발표를 진행하던 도중 MySQL DB가 죽었습니다...
- MySQL을 백업한 데이터로 복구하고 2번의 팀장 주간 회의에 참여하였습니다.
실전 프로젝트 3주 차 이야기
- Kakao Map API와 Socket을 담당하는 백 엔드와 프론트 엔드 팀원이 존재합니다. 하지만 프론트 엔드 팀원의 경우 확실한 Socket과 Map API에 대한 개념을 알기 힘들기 때문에 효율적인 업무를 위해 5가지의 순서대로 팀원들에게 코드를 작성하고 공유하였습니다.
- Kakao Map API 또는 Socket 예제를 HTML로 구현합니다.
- 구현한 HTML에 모든 코드에 주석을 작성합니다.
- Server에 구현한 HTML을 배포합니다.
- 담당 팀원에게 HTML을 시연하면서 각각의 기능에 관해 설명합니다.
- 해당하는 기능의 코드가 어떤 방식으로 구성되는지 코드리뷰를 진행합니다.
- Kakao Map API를 이용해 해당하는 위치의 위도, 경도, 주소 정보를 얻어오는 HTML을 작성하였습니다. 지도의 중심에 Marker를 고정하는 방법과 지도가 이동하게 되었을 경우 변경해야 하는 이벤트들을 구현하는 부분에서 어려움이 있었지만, 정상적으로 구현되는 것을 확인하고 HTML 내부에서 반환되는 변수까지 구현하여 프론트 엔드 팀원에게 공유하였습니다.
- AWS EC2 MySQL DB가 갑작스럽게 죽었습니다. 그냥 죽었습니다. 기존에 mysqldump 명령어로 백업해둔 파일이 있었기 때문에 큰 손해 없이 진행할 수 있었지만, 만약 백업해둔 파일이 없었다면 복구하는데 얼마나 시간이 걸렸을지 벌써 소름이 끼칩니다.
- AWS SES를 사용해 인증 메일 서버를 구현하였습니다. AWS 문서가 모두 영어로 되어있고, 제가 도메인을 호스팅하는 Gabia 사이트에 대한 예제가 나와 있지 않았고, UNAME, TXT 등 처음 보는 속성들과 어느 부분에 이러한 데이터를 넣어야 하는지 알지 못해 구현하는 데 많은 시간이 소모되었습니다. 모든 연동을 끝마치고 aws-sdk Node.js 모듈을 사용해 프로젝트에서 비밀번호 인증을 보낼 수 있도록 API를 구현하였습니다.
- Docker를 공부하였습니다. Docker를 사용하는 가장 기초적인 개념과 Docker Volume, Docker Network에 대해 학습하였습니다. 실전 프로젝트에서 접목하면 좋은 기능을 생각해놓아야 할 것 같습니다.
- Raw Query에서 Sequelize로 점차 변경하도록 해야겠습니다. 단순한 CRUD는 Sequelize를 사용하지만, JOIN을 사용하거나 복잡한 조회, TRIGGER, PROCEDURE의 경우 Raw Query를 사용하는데 테이블의 구조가 변경되는 경우가 생겼을 때 해당하는 SQL을 전부 수정해야 하는 일이 발생합니다. Sequelize를 사용해 직관적이고 객체 지향적인 코드로 프로젝트를 효율적으로 관리할 수 있도록 구성해야 할 것 같습니다.
배운 점
- 멘탈 관리 방법
- AWS SES 메일 서버
- Kakao Map Services 및 Event
- Swagger API 관리 모듈
- Crypto 암호화 모듈
- Jest, Supertest 테스트코드 관리 모듈
- Morgan 모듈
- MySQL 백업 및 복구
나의 생각과 이야기
- 멘탈을 회복한 한 주였던 것 같습니다. 문제를 혼자 마음속에 가지고만 있으면 아무런 해결은 되지 않는다는 것을 깨달았습니다. 이러한 문제가 있을 경우 적극적으로 어떤 방식으로 해결해야 하는지 팀원분들과 다른 사람들에게 객관적인 시각으로 문제점이 어느 것인지 교류하면서 해결하는 것이 가장 빠르고 정확한 해결방법인 것 같습니다. 실전 프로젝트를 진행하면서 쌓였던 문제점이 어느 정도 풀렸기 때문에 다음 주부터 다시 속도를 내면서 진행할 수 있을 것 같습니다.
- 팀 구성원들이 점점 자신감을 느끼고 있는 것 같습니다. 처음 프로젝트를 진행할 때와는 다르게 어떤 방식으로 프로젝트를 진행해야 효율적으로 해결할 수 있는지 깨달은 것 같고, 그중 가장 중요한 것이 해결할 수 없는 문제가 발생하였을 때 혼자만의 고민으로 시간을 버리지 않고, 남들에게 발생한 문제에 대해 공유하면서 어떠한 방식으로 해결하면 좋을지 이야기를 듣는 것이 중요하다는 것을 깨달은 것 같아 매우 뿌듯합니다.
- 다음 주에는 작성한 코드를 되돌아보면서 SQL Injection, 부하 테스트 등 보안과 관련된 부분에서 문제점이 없는지 코드를 분해해 봐야 할 것 같습니다. 매일 급박하게 프로젝트를 진행하다 보니 작성한 코드의 안전을 고려하는 것보다 기능을 빠르게 구현해야 한다는 생각 때문에 보안에 관한 많은 부분을 놓치고 온 것 같습니다. 코드를 차근차근 이해하면서 되돌아보고 백 엔드 팀원들과 코드리뷰를 다시 진행하면서 보안 취약점에 관해 이야기해봐야 할 것 같습니다.
- 모두 긍정적인 마음가짐으로 프로젝트 진행합시다!
'항해99 > WIL' 카테고리의 다른 글
[항해99] WIL 11주차 - 실전 프로젝트 5주차 (후기) (0) | 2021.08.22 |
---|---|
[항해99] WIL 10주차 - 실전 프로젝트 4주차 (후기) (0) | 2021.08.15 |
[항해99] WIL 8주차 - 실전 프로젝트 2주차 (후기) (0) | 2021.08.01 |
[항해99] WIL 7주차 - 실전 프로젝트 1주차 (후기) (0) | 2021.07.25 |
[항해99] WIL 6주차 - Node.js 클론 코딩 기간(후기) (0) | 2021.07.18 |