[항해 99] - 1주차 WIL

박하린·2021년 9월 19일

항해99

목록 보기
6/27

🗓 항해 99 3기에서 9/ 13 ~ 9/ 18 동안의 1주차 회고록

첫 협업

1. 웹개발 미니 프로젝트

13일에 팀을 배정받고 바로 프로젝트를 시작하였다. 왜 팀장이 된지는 잘 모르겠지만 팀장이 되었다.. 매니저님 말로는 첫프로젝트 때는 팀원을 잘 이끌 수 있는 사람을 팀장으로 지정하셨다고 하셨는데 나는 다른 사람을 이끄는 일보다는 맡은 일에 최선을 다하는 성향이라서 조금 당황스러웠다. 지금 생각해봐도 팀장으로써 했던 일이 너무 없는 것 같아 죄송할 따름..

프로젝트 주제는 자유이고, 필수 포함 사항을 포함해서 웹개발을 하는 발제를 받았다.

필수 포함 사항

  • Jinja2 템플릿 엔진을 이용한 서버사이드 렌더링
  • JWT 인증 방식으로 로그인 구현하기
  • AWS EC2 서버에 배포하고 도메인 등록하기

jinja2, jwt 다 처음 보는 기술이라 적잖이 당황했지만 우리 조에 사전 스터디때 저 기술을 사용해서 웹 개발을 미리 해보고 오신 분이 계셔서 그 분께 처음부터 마지막까지 많은 도움을 받았다. 정말 감사한분 ㅜ

회의를 하고나서 주제를 정하고 와이어 프레임 설계, 개발해야 하는 기능들을 정리하였다. 지금 생각해보면 와이어 프레임 그릴 때 좀 더 신경써서 그릴걸 하는 생각이 든다.
화면 단위로 최대한 자세하게 레이아웃을 생각해서 그려야 그대로 개발할 텐데 우리 조 같은 경우는 와이어 프레임을 너무 러프하게 그렸던 것 같다. 그렇다고 그때가서 다 엎고 다시 바꿀 수도 없으니 그냥 그대로 뷰를 완성하긴 했지만 프로젝트를 기획할 때는 초반에 설계 단계가 정말 중요하다는 것을 깨달았다.

2. 프론트? 백?

사실 나는 웹 개발 종합반 강의 외에는 다른 준비는 거의 하지 않고 항해를 시작했다.
그 전에 해 본 공부라고는 HTML, CSS 강의 듣기, 알고리즘 문제 풀기 밖에 없었고 서버 개발에 관한 내용은 아예 정말 1도 몰랐다.
개발공부를 하면서 내가 작성한 코드로 화면이 변화할 때마다 재미를 느끼고 개발자를 꿈꾸게 된거라 백엔드보다는 프론트엔드에 관심이 쏠렸고, 지원할 때부터 마음속으로는 주특기를 리액트로 정하고 들어갔다. 물론 들어가서 서버쪽이 재미있으면 백엔드로 갈 가능성 또한 열어두긴 했다.

미니 프로젝트를 하면서 나는 버킷리스트 글 CRUD 기능 구현을 맡게되었다. 백에서 API를 만들고, 그걸 사용할 클라이언트를 만들게 되었다. 그러다보기 글 저장, 수정, 삭제 기능을 구현하는데 집중하게되었고, 전체적인 뷰를 거의 신경을 쓰지 못했다. 프론트엔드 개발을 하고싶어서 들어왔는데 API를 만들고 데이터 다루는 작업을 더 많이 하다보니까 조금 혼란스러웠던 것 같다.

기능 구현을 다 하고 시간이 조금 남아서 목요일 밤쯤에는 홈 화면 레이아웃을 조금 바꿔보고 싶어서 CSS로 조금 건드려보았다. bootstrap으로 홈 화면을 만들어 놓으셔서 커스터마이징하는 데 너무 어려웠고, 내 CSS 실력이 형편없음을 깨달았다. 프론트엔드 개발자가 될거야! 라고 말하고 다니면서 기본적인 CSS 다룰줄도 모르는게 너무 부끄러웠었다. 스타트업에 취업하게 되면 html, css도 다루게 될텐데 시간 날때마다 css 공부를 많이 해둬야 할 것 같다. 이거 작성 다 하면 css강의를 들으려고 한다.

서버 쪽 개발은 해보니까 너무 어렵고, 내 머리로는 이해하는 데 어려운 부분이 많았다... 자바스크립트로 버튼이나 input element에 이벤트를 주는 게 훨씬 재미있었던 것 같다.

이번 주에 배운 것

1. 질문하는 방법

이건 42 서울에서 공부할 때 배웠다고 생각했는데 아니였나보다 ㅎ

개발자가 갖춰야 할 자세 중 하나가 자기 주도적으로 문제를 해결하려는 자세라고 생각한다. 물론 문제해결을 도와줄 멘토가 존재하면 너무 좋은 환경이지만, 실무에서는 내 오류를 하나하나 도움을 청할 수 있는 환경이 아닐 것이다.

미니 프로젝트를 하면서 사전 스터디 경험이 있으신 분에게 질문을 많이 했는데 솔직히 내가 먼저 구글링 하려는 생각을 많이 안했던 것 같다. 내 문제해결을 도와줄 사람이 존재하니까 내가 해결하려는 생각보다 도움을 청하려는 생각을 더 먼저 했었다. 그 팀원 분께서도 이러한 내 문제점을 알고 전부 다 알려주시기보다 먼저 검색을 해보라는 말을 많이 해주셨고, 그래도 모르겠고 헷갈린다하면 본인이 생각하는 해결방법을 공유해주셨다.

그 뒤로는 오류 메세지를 잘 읽어보고 그 오류를 검색해보고 해결방법을 찾는 데 노력해보고 그래도 왜 안되는 지 모를 때 질문하려고 했던 것 같다.

2. Github branch

github branch를 따로 파서 master에 merge하는 것을 배웠다.

  • 브랜치 만들고 그 브랜치로 전환하기
    git branch -b <branch name>

  • 브랜치 삭제하기
    git branch -d <branch name>

  • git pull = git fetch + git merge : 원격 저장소의 정보를 가져오면서 자동으로 로컬 브랜치에 병합(Merge)까지 수행해주는 명령어

  • 내 로컬 브랜치에서 작업한 것을 add, commitm, push하고 git pull 로 원격 mater 브랜치에 있는 변경사항을 가져오면 confilet가 안 날 경우 merge된다.

3. JWT 인증 방식

JWT(JSON Web Token)란 인증에 필요한 정보들을 암호화시킨 토큰을 의미한다. JWT 기반 인증은 쿠키/세션 방식과 유사하게 JWT 토큰(Access Token)을 HTTP 헤더에 실어 서버가 클라이언트를 식별한다.

  • 인증 과정
    1. 클라이언트에서 로그인 요청이 들어오면, 서버는 검증 후 클라이언트의 ID, 만료시간 등의 정보를 Payload에 담는다.
    2. 암호화할 SECRET KEY를 사용해 jwt 토큰을 발급한다.
    3. 클라이언트는 전달받은 토큰을 쿠키에 저장해두고, 서버에 요청할 대마다 토큰을 헤더에 포함시켜 함께 전달한다.
    4. 서버는 토큰을 SECRET KEY로 복호화 한다.
    5. 유효한 토큰이면 요청에 응답한다.

2주차 주특기

다음주 부터 주특기 기본주차가 시작된다.
리액트 배울 게 엄청나다고 해서 내가 얼마나 잘 지식을 습득할 수 있을지 걱정되기도 하고, 튜터님이 엄청 열정적이시다고 들어서 기대도된다.ㅎㅎ

profile
깃허브: https://github.com/khakaa

0개의 댓글