이 글은 1부에서 이어집니다!
6. 서버 파트 극락 세미나
SOPT의 회원들은 매주 토요일 진행되는 파트 별 세미나를 통해 지식을 쌓고, 추후에 참여 할 협업과 프로젝트를 위한 준비를 시작한다. 추후 이야기 할 앱잼이 SOPT의 꽃이라면, 세미나는 꽃을 피우기 위한 씨앗과 같은 역할이다.
세미나 커리큘럼은 파트장이 직접 정하는데. 이번 기수의 경우 Node.js, Express, Firebase, AWS RDS, PostgreSQL를 활용했다. 전체적인 8주 동안의 커리큘럼은 아래와 같았다.
1차 세미나 : JavaScript, NodeJS, Git
2차 세미나 : 비동기 흐름제어, 모듈, Express
3차 세미나 : HTTP, CRUD, Firebase Cloud Functions
4차 세미나 : DB, SQL, NodeJS 연동, RDS
5차 세미나 : NodeJS 연동, 유저 인증, ERD, REST API, API 문서
6차 세미나 : 클라이언트-서버 합동 세미나
7차 세미나 : Firebase Authentication (회원가입, 로그인, 인증), Firebase Storage (이미지 업로드), API 제작 실전
8차 세미나 : 컨벤션, 디버깅, 커뮤니케이션
우선 스택에 대해 이야기하자면, Node.js와 Express는 개인적으로 서버 공부를 처음 시작할 때에 사용했던 것이고, PostgreSQL은 사용 경험이 있는 MySQL과 유사해 큰 어려움은 없었다. 다만 AWS RDS와 Firebase는 처음 접하는 것이었다. 사실 세미나를 통해 Firebase라는 서비스 자체를 처음 들었는데, 서버리스, BaaS(Backend as a Service)의 강력함과 편리함을 몸소 느낄 수 있었다.
전체적인 흐름을 이야기 해 보자면, 제일 처음으로는 언어와 프레임워크의 기본적인 개념에 대해 학습했다. 이를 바탕으로 HTTP 통신을 통한 CRUD를 배웠고, RDS DB와 연결 해 실제 데이터를 조작하는 방법을 학습했다. Firebase를 통해 서버를 작동시키고 배포하는 방법을 다루었고, Firebase가 자체적으로 제공하는 인증, 저장소 기능을 활용한 다양한 기능을 직접 구현 해 보았다. 또한 REST API, 클라이언트와의 협업 시 사용할 API 문서를 작성하는 방법을 학습하고, 실제 API를 제작하는 과정을 함께 했다.
파트장님이 보일러플레이트를 제공해주신 덕에 초기 세팅에 크게 신경쓰지 않고 기능 구현에 집중할 수 있어 좋았다. 다만, 조금 더 세부적인 내용에 대해 알고 싶다는 생각이 들기도 했다. 대부분의 개발자들이 그렇다고는 하지만, '이렇게 코드를 작성하면 작동은 하는데, 이게 왜 되는거지?'와 같은 의문이 들었다. 이 때문에 복습하는 과정에서 보일러플레이트나 파트장님이 작성 한 코드들을 뜯어보기도 했고, 덕분에 Firebase와 Express의 작동 원리에 대해 조금 더 이해할 수 있었다.
각 세미나 후에는 지속적으로 과제가 출제되었는데, 앱잼 참가를 위해서는 Level 1 과제만 수행하면 됐지만, 나는 조금 더 학습하고 배우고 싶었기에 꾸준히 Level 2, 3 과제에까지 도전했다. 가끔씩 어려움이 있기도 했지만, 세미나 내용을 복습하고 구글링과 SOPT 친구들 등 다양한 경로를 통해 도움을 받아 포기하지 않고 완료할 수 있었다. 3주차와 4주차 사이에 노트북을 새로 구매했는데, 이 때문에 노드 버전과 패키지와 같은 초기 세팅이 달라져 서버가 열리지조차 않고, 배포가 되지 않는 등의 문제가 있었다. 이 때 역시 친구들과 OB 선배들, 그리고 파트장님의 도움 덕분에 문제를 해결할 수 있었다.
이런 식으로 어려움을 겪고, 스스로 해결하려고 노력하고, 도움을 받는 경험이 쌓이다 보니, 문제를 직접 해결한 적도 몇 번 있었다. 나 역시 많은 도움을 받았기 때문에, 받은 만큼 돌려주고, 함께 해결법을 나누고 싶었다. 두 번 정도가 크게 기억에 남아 이 경험을 공유하고자 한다.
첫 번째로, Firebase Storage에 저장된 파일에 url로 접근 시, 권한이 없어 접근이 거절(Permission Denied)되는 문제가 있었다. Firebase Console에서의 Rules를 수정했음에도 이러한 문제가 발생했는데, 나 뿐만 아니라 파트원들 역시 같은 문제를 겪고 있었다. 얼마 동안의 구글링 끝에, Stack Overflow의 외국인 형님들의 조언을 따라 구글 계정에서 권한을 설정해야 한다는 사실을 알게 되었다. 시간이 꽤 지난 답변이었어서 인터페이스가 조금 달랐고, 설정 페이지의 영어가 정확히 어떻게 번역되어 있는지 헷갈리긴 했지만, 이 방법으로 문제를 해결할 수 있었다. 항상 도움만 받던 내가 처음 남에게 도움을 주는 순간이었다.
두 번째는 바로 busboy 라이브러리를 사용할 때였다. 당시 이미지를 Firebase Storage에 업로드하는 내용을 학습하고 과제를 하던 중이었는데, 계속 오류가 발생했다. 심지어, Github의 파트장님이 작성한 코드를 그대로 내려받아 실행시켜도 에러가 발생했다. 그 때, 두 가지 기억이 떠올랐다. 첫 번째는 처음 서버를 공부할 때 사용한 lowdb라는 라이브러리가 업데이트 되면서 사용 문법이 완전히 바뀌어 강의 버전과 같은 구버전을 설치했던 것이고, 나머지 하나는 새 노트북 구매 후 패키지 문제로 서버가 작동되지 않던 문제였다. package.json 파일을 확인 해 보니, 역시 파트장님과 나의 busboy 버전에 차이가 있었다. 아무래도 lowdb의 경우처럼 버전이 업데이트되면서 사용법이 바뀐 상황이었던 것 같았고, npm을 통해 버전을 다운그레이드하니 코드가 정상적으로 작동했다. 사실 엄청난 문제를 직접 해결한 것은 아니지만, 이러한 두 번의 경험은 나에게 자신감을 불어넣기에는 충분했다.
그렇게 나름대로 열정을 가지고 학습하고 노력하다보니, 어느새 마지막 세미나까지 모두 끝나 있었다. 서버 파트와 함께 한 서버는 '안무서버'였고, '극락이'로 불렸던 서버 파트원들은 마침내 모두 '극락'에 무사히 도착했다. 돌이켜보면 너무 빠른 몇 달이었다. 하지만, 도움만 받던 '왕초보' 개발자는, 몇 달 사이 작은 도움을 나눌 수 있는, '초보' 개발자로 성장 해 있었다.
매 주 엄청난 분량의 자료를 준비하고, 4시간이라는 긴 시간 동안 자신의 지식을 나누며, 항상 준비 된 상태로 파트원들의 질문에 대답한다는 것은 정말 엄청난 일이다. 지난 몇 달 동안 자신의 일상을 갈아 넣어 이 엄청난 일을 완수해낸 최고의 서버 파트장 우영이형에게 다시 한 번 감사하다. 또, 많은 도움을 주고 나의 성장을 함께 지켜 봐 준 서버 파트원들에게 진심으로 감사하다. 코로나로 인해 다 함께 친해지지는 못했지만, 함께하는 파트원들이 있어 끝까지 올 수 있었다.
원래 예정된 회고는 2부작이었으나, 할 말이 너무 많아져 내용이 생각보다 너무 늘어나고 있다. 이 대로면 최소 5부작이 나올 것 같은데, 세미나 외의 못 다한 이야기는 3부에서 이어가겠다.
'Rewind HYOSITIVE' 카테고리의 다른 글
2023 상반기 ICT 학점연계 프로젝트 인턴십 글로벌 과정 합격 후기 (16) | 2023.02.19 |
---|---|
[Rewind 2022 - 下] 중요한 건 꺾이지 않는 마음 (0) | 2023.01.01 |
[Rewind 2022 - 上] 노력하는 과정, 그 자체를 즐기는 사람으로 (2) | 2022.08.11 |
[WE SOPT 회고] 열정 안에서 열정을 불태우다 - (1) 첫 만남에서 합격까지 (2) | 2022.02.13 |
[Rewind 2020] 군대에서의 노력 (3) | 2021.01.03 |