프로젝트/42프로젝트

42 내 공유우산 프로젝트 회고(42OpenUmbrella)

susong 2023. 8. 11. 15:20
728x90

또 하나의 프로젝트를 마치며

42 내에서 진행한 프로젝트가 벌써 6개가 되었다. 하나하나 다들 사랑받는 서비스로 성장하고 있어서 뿌듯하면서도, 요즘은 너무 많이 개발했나?라는 생각도 들곤 한다. 특히, 요즘 몇몇 분들이 내게 '42 내에서 몇 개의 서비스를 했냐고' 묻지 않고 '몇 개의 서비스에 참여하지 않았냐고' 물어볼 때는 깜짝 놀라기도 했다. 그래서 막상 세보니 42 내부에서 작동하는 웹서비스 9개 중 5개에 리딩 혹은 인볼브 한 흔적이 있어서, 정말 많이 참여했구나라는 생각과 동시에 잘 살았구나 하는 생각이 들었다.

 

이번 프로젝트는 장마 기간에 공유우산을 42 일원들에게 제공해주자는 생각으로 진행된 프로젝트였다. 42 내에는 좋은 커뮤니티 일원들이 많고, 그중 jmaing님이 자신의 사비를 들여서 클러스터(42에서는 센터를 클러스터라고 부른다)에 공유우산 50개를 기부해 주셨다. 하지만, 공유지의 비극이라는 말처럼 이 공유우산에 적절한 관리수단이 없으면 고장 날 것은 당연지사. 이 공유우산이 잘 사용될 수 있도록 웹 서비스로 관리 서비스를 만드는 것이 우리의 목표였다.

 

Nest에서 Fast API로

가장 자신있는 백엔드 프레임워크가 뭐야!라고 물으면 Nest.JS를 대답할 수 있을 것 같다. 해당 프레임워크로 깔끔하게 서비스도 여러 번 제작해 보았고, 또 여러 번 해봤기 때문에 어떻게 써야 편하게 쓸 수 있는지 알기 때문이다. 또한, 플로우가 비슷하다면 이전에 사용했던 코드들을 가져다가 쓸 수 있기 때문에 사실 Nest로 개발했다면 정말 빠르게 개발할 수 있었을 것이다. 하지만, 나는 그렇게 하기 싫었다.

 

42의 후보생 과정을 거치면서 내가 얻은 가장 소중한 지식은 '새로운 것을 배우는 방법에 대한 앎'이다. 42에서는 어떤 기술이든 배우고 싶을 때 빠르게 배울 수 있도록 하는 소프트스킬과 접근법 등을 모두 제공해주었는데, 이 방법을 사용하지 않는 것은 낭비라고 생각이 들었기 때문이다. 그래서 나는 Nest로 약 80% 정도 개발을 하다가 마지막에 가서 갑자기 FAST API로 프레임워크를 엎어버렸다. 이번 프로젝트는 같이 개발하는 팀원이 없었고, 나 혼자 개발하고 있다 보니까 그 오버헤드를 나만 감당하면 되었기에 할 수 있었던 선택이었던 것 같다.

 

그래서, 고작 그런 이유로 Fast API로 개발하게 되었다. 새로운 것을 배우고 싶다는 열망을 통해서 이미 개발하던 것을 엎어버린 것이다. 지금 생각해도 별종같은 판단이었지만, 그렇기 때문에 많이 배울 수 있었다. 

위는 Fast API 레포지토리, 아래는 Nest.js 레포지토리

새로운 기술로의 도전

Python으로 백엔드를 개발하는 것은 쉽지만은 않았다. 일단 가장 먼저 다가온 벽은 파이썬에 대한 벽이었다. 다행히도, 나는 지금까지 알고리즘 문제를 풀 때 파이썬으로 풀었기 때문에 파이썬 기본문법에 대해서는 잘 알았지만 그 이상은 잘 몰랐다. 조금이라도 파이썬의 고급기능을 쓰려고 하면 그것들은 모두 다 배워야 할 것들이었고, 그렇기 때문에 개발은 쭉 달리지 못하고 조금 가다가 배우느라고 걷는 시간이 반복되었다. 또한, Fast API는 써본 적이 없기 때문에 다큐먼트를 하나하나 처음부터 다 읽어야 했고, 이 과정에서 생각보다 많은 시간이 걸렸다.

 

하지만, 이 과정에서 하나 깨달은 것은 기술문서를 바라보는 나의 모습이 옛날과는 다르다는 것이다. 이전에 내가 대학에 다닐 때 라이브러리 혹은 프레임워크 기술문서들은 내게 하나의 어려움으로 다가오는 문서였다. 특히, 조금이라도 불친절하거나 튜토리얼이 충분하지 않은 기술문서들은 이해하기가 어려웠고, 그렇기 때문에 중도에 포기하는 경우도 많았다. 그런데 42 과정을 거치며 RFC와 POSIX에 적응을해서인가 Fast API의 기술문서는 너무나도 친절했고 읽기에도 편안했다. 과장 조금 섞어서, 그냥 소설책 읽는 것처럼 기술 문서를 읽을 수 있었다.

 

Fast API기술문서는 대체적으로 튜토리얼과 예문들로 구성되어 있었는데, 이 문서들을 앞에서부터 차근차근 읽어보니 전체적인 프레임워크의 플롯을 확인할 수 있었고 덕분에 빠르게 구현을 마무리할 수 있었다. Nest로 개발했을 때 약 일주일이라는 시간이 걸렸었는데, 내가 자신있는 걸로 일주일 걸렸으니 처음 써보는 것으로는 2주 정도 걸릴 것이라고 생각했다. 하지만, 막상 결과를 바라보니 3일 만에 개발을 마무리할 수 있었다.

 

OAuth 플롯, 그리고 HTTP 엔드포인트, 백엔드 프레임워크 구조에 대한 이해가 높아져서 그런것도 있겠지만 기술문서를 받아들이는 나의 태도와 속도가 정말이지 많이 달라졌다는 것을 깨달았다. 42가 내게 준 가장 귀한 선물인 '배우는 방법을 아는 것'이 가장 잘 발휘된 순간이지 않았나 싶다.

 

운영되는 서비스

태풍 카눈이 한반도를 할퀸 날 공유 우산은 불티나게 나갔다. 대부분의 우산들에 새로운 대여기록이 만들어졌고, 또 모든 우산들은 대여에 대한 반납기록도 가지게 되었다. 여러 커뮤니티에서 공유우산이 도입되고 그것이 어떻게 무너지는지 바 왔던 내게 이 프로젝트가 만들어낸 결실은 뜻깊게 다가오는 것 같다. 앞으로도 이렇게 내가 개발한 것이 실제 문제를 해결해 주는 그런 개발을 해내고 싶다. 

012
실제 작동하는 사이트

사이트 주소는 https://openumbrella.site로 접속해서 사용해볼 수 있다.

(**42서울 교육생 혹은 직원 계정 필요!!**)

 

 

728x90