거누의 개발노트

[항해] Chapter 1 - 웹개발 미니 프로젝트 회고록 본문

항해/미니프로젝트

[항해] Chapter 1 - 웹개발 미니 프로젝트 회고록

Gogozzi 2022. 5. 12. 16:40
반응형

1일차 회고

항해가 시작되었다.

웹개발 종합반에서 배운 python, flask, dbmongo, aws 로 미니 프로젝트를 진행하는 Chapter 이다.

4명의 팀으로 구성해서 협업으로 프로젝트를 진행한다.

처음에 간략히 인사를 나누고 어떤 아이디어로 웹 프로젝트를 만들지 정했다.

우리 팀은 주식관련 웹 프로젝트로 결정되었다.

팀장 분이 사전에 혼자서 작업하던 작업물이 있어서 그 작업물을 기준으로 깃에 올리기로 했다.

처음에는 내가 레포지토리를 올려서 팀원들을 초대해 주었다.

( 초대하는 기능 있겠거니 했는데 써보는건 처음 인 것 같다. )

하다보니 branch, Pull Request, Merge.. 등 깃에 대해 모르는 부분이 많았다.

팀원중 한분이 이미 Git도 그렇고 CI/CD 등 아는 부분이 많으셔서 작업해 보신다고 하셨다.

Git으로 자동 배포를 하려고 하다보니 팀원분의 개인 AWS 정보가 노출 될 수 있어서 팀원분의 깃으로 넘겨주었다.

이미지 처럼 권한이 깃을 만든사람에 정책, 권한관리 등의 권한이 있어서 이렇게 결정하게 되었다.

별로 한 거 없이 시간이 훌쩍 가버린것 같다. 물론 회의도하고, 아이템도 정하고, 깃은 어떻게 할건지

중간에 TIL 관련한 강의도 들어서 진짜 시간이 금방이었다.

혼자 Git이 좀 부족 한 것 같아서 항해에서 제공해주는 Git 강의 영상을 밤늦게 까지 공부했다.

 

2일차 회고

2일차에는 그래도 나름 적응도 되었고 머릿속으로 멀 할지 정해놔서 그런지 편안했다.

회의 중에 나는 로그인, 회원가입을 진행하겠다고 했다. ( 개인적으로 회원 부분부터 진행되는게 좋아서 내가 빠르게 작업한다고 했다. )

초기 파일만 만들고 유효성 검사나 아이디 중복체크는 제외한 작업을 했고 밤늦게 까지 공부한 보람을 빛을 볼 때가 왔다.

branch를 만들어서 했고, 작업이 된후에는 커밋 -> 내 브랜치 푸쉬 -> pull request 요청 -> 팀원들이랑 커밋내용 이야기하고 -> merge 까지! 뿌듯했다!! 드디어 먼가 정상적으로 된 것 같다는 생각이 들었다.

 

기능을 만들고 세부적으로 유효성검사랑 중복체크 기능을 만들어 놓았다.

그런데 팀에서 app.py를 다같이 고치게 되고 라인수도 너무 길어져서 코드를 수정하고 확인하는데 어려움이 있었다. ( 머지 컨플리트도 계속 났다 ㅠㅠ )

그래서 app.py를 분리하기로 했다!! 이 작업은 같이 보면서 혼자 작업해야하는 부분이라 팀원 한 분이 주도적으로 하게 되었다.

 

Flask - Layerd Architecture 이 부분을 참고해서 보셨다고 한다.

https://velog.io/@inyong_pang/Flask-Layered-Architecture-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0

 

Flask - Layered Architecture 적용하기

이전 블로그에서 알아보았듯이 Layered Architecture는 3가지 레이어로 나눌 수 있다. 이번에는 우리가 만들었던 Minitter를 레이어드 패턴 아키텍처로 구성하고자 한다 Layered Architecture 레이어드 아키텍

velog.io

작업 하시는걸 화면공유로 보여주면서 했는데 내가 혼자 개발하다보면 항상 같은 방법을 생각하고 다른관점에서 못보는 경향이 있는데 이번에 다른 사람이 개발하는걸 보면서 진짜 좋은경험이 된 것 같다.

 

3일차 회고

3일 차에는 레이어드 아키텍처 구분이 어느정도 되어서 변경된 소스들이 무진장 많았다. 

내 로컬 레포지토리에 Pull 해서 쭉 ~ 살펴 보았다. MVC 패턴이랑 비스무리 한 것 같다. (팀 잘 만난것 같닼ㅋㅋㅋ)

그리고 회원탈퇴 API, 마이페이지 상세 API 그리고 화면을 구현했다.

회원 탈퇴 기능을 만드고 테스트 하는 와중에 같은 아이디로 또 회원가입을 하면 등록했던 정보들이 삭제 안되는 상황이 있었다.

이 오류는 회원탈퇴 할 때 User 정보만 삭제하는게 아니라 등록했던 정보 모두 삭제 되어야한다. delete_one 만쓰다가 처음으로 delete_many를 써봤다.

 

4일차 회고

프로젝트가 거의 마무리 단계에 들어섰다.

한가지 문제점에 대해서 이야기가 나왔었는데...

마이페이지나, 회원이 등록한 정보들을 볼 때 회원정보를 보내줘야 하는지에 대한 문제였다.

우리 프로젝트는 현재 JWT 방식으로 로그인이 구현되있었고,

[JWT 인증 방식]

1. 클라이언트 로그인 요청이 들어오면, 서버는 검증 후 클라이언트 고유 ID 등의 정보를 Payload에 담는다.
2. 암호화할 비밀키를 사용해 Access Token(JWT)을 발급한다.
3. 클라이언트는 전달받은 토큰을 저장해두고, 서버에 요청할 때 마다 토큰을 요청 헤더에 포함시켜 함께 전달한다.
4. 서버는 토큰의 서명을 비밀키로 복호화한 다음, 위변조 여부 및 유효 기간 등을 확인한다.
5. 유효한 토큰이라면 요청에 응답한다.

이러한 방식으로 구현되어 있다.

 

결론적으로는 마이페이지 정보를 볼 때 회원정보를 보내줄 필요 없이 요청 헤더에 포함된 정보를 확인해서 로그인 유무나 회원정보를 활용하면 된다.

https://velog.io/@jinyoungchoi95/JWTJson-Web-Token-%EC%9D%B8%EC%A6%9D%EB%B0%A9%EC%8B%9D

 

JWT(Json Web Token) 인증방식

왜 JWT가 만들어져야했으며 JWT가 뭔지, 어떻게 구현되어있는지를 중점적으로 글을 써보았어요 🙆‍♂️

velog.io

 

위 페이지에 설명이 잘 되어있다.

 

마지막으로 이번 미니 팀 프로젝트 대한 회고를 진행하고 첫번째 챕터는 마무리 될 것 같다. 

제대로 깃을 써보고 처음 써보는 Python 언어에 다양한 패키지들 그리고 mongoDB도 처음 썼지만 Spring으로 Web 프로젝트 만드는 것과 유사한 것 같다. 1일차 때는 모르는것도 있고 어색하기도하고 적응도 못하고 있었는데 2일차 되니까 또 금방 적응되서 벌써 4일차가 지나가는걸 보니 앞으로 시간이 더 빠르게 흐를 것 같다. 

 

[프로젝트 Git 주소]

https://github.com/SangHoonly/stock_team4

 

GitHub - SangHoonly/stock_team4: 항해99 4조 주식 웹 사이트

항해99 4조 주식 웹 사이트. Contribute to SangHoonly/stock_team4 development by creating an account on GitHub.

github.com

 

반응형
Comments