CAREER/스타트업

4개월의 인턴십을 마치고_스타트업 SLID 인턴

김쿸후 2021. 12. 29. 16:36

정말 큰 애정을 가진 우리 회사 SLID, 4개월 간의 기억을 되짚으며 회고록을 작성해보려고 한다!

다들 슬리드 하세요..

더보기

* 목차

1. SLID 는 어떤 회사?

2. 입사 계기

3. 월 별 인턴일지

4. 회고..


1. SLID 는 어떤 회사?

https://www.youtube.com/watch?v=1owXApcG1Lo

SLID ?
슬리드는 온라인 강의를 보면서 쉽게 화면을 캡쳐하고 필기를 남길 수 있는 캡쳐 필기 노트입니다.
슬리드를 활용해 온라인에서도 마음껏 공부해보세요

SLID는 온라인에서 수업을 들으며 필기를 동시에 할 수 있는 서비스이다.

* 기능

- 이렇게 왼쪽에는 강의 오른쪽에는 노트 필기를 할 수 있는 화면이 있으며, 아래의 파란버튼을 누르면 그 순간의 강의가 캡처된다.

- 사진은 사진 속의 글자를 추출할 수도 있으며, 사진 위에 그림을 그릴 수 있다.

- 사진을 누르면 해당 부분의 강의로 이동하여 다시 볼 수 있다.

위의 내가 소개한 기능 외에도 다양한 기능이 있으니 Slid 한번 가입해서 확인해보시길 >~<

2. 입사 계기

- 지원 동기

사실 내가 박정현 대표님(Junghyun)을 만난 것은 우연에 가깝다. 신촌 연합 IT 창업동아리에서 해커톤을 진행했었는데 우연히 우리 조가 시간이 남아 해커톤 멘토로 참여하신 Junghyun과 대화할 수 있는 기회가 있었다. 시간도 새벽이고, 다들 지친 상태에서 편한 마음으로 이런 저런 이야기를 나누었는데, 그때 해외 인턴십, 소프트웨어 마에스트로, 창업 등 Junghyun이 살아오신 삶에 대한 이야기를 들었다. 이야기를 듣다보니 Junghyun이 굉장히 넓은 세계를 경험하셨다고 느꼈고 그런 Junghyun이 하시고 있는 사업이 궁금해졌다.

그로부터 일주일 후에, Junghyun이 개발자 모집 공고를 올리셨고, 아직 학기가 2학기가 남았고, 졸업 프로젝트로 휴학을 할 수 없는 상황이었던 나는 정규직으로 지원하기 부담스러웠다. 많은 고민 끝에 말이라도 해보자는 마음으로, 파트타임 인턴으로 참여할 수 있겠냐고 제안을 드렸다. Junghyun은 당시 CI /CD 를 중점적으로 업무를 해줄 DevOps 인력을 모집하고 계셨고, 나도 마침 클라우드 분야에 흥미를 가지기 시작했을 때라 더 용기를 냈다.

- Coffee Chat

Junghyun과 커피와 함께 간단한 이야기를 나누는 시간이었는데 그렇게 부담스럽지 않았다. 그냥 내 최근 관심 분야가 클라우드 파트이고 이 부분이 회사에서 요구하는 부분과 일치하는 지를 확인하는 것 같았다. 나는 SLID 가 일하고 싶은 직무이기도 하고 일하고 싶은 아이템이었기 때문에 좋아요 ^^* 의 연속이었다ㅎㅎ

- 면접 (feat. 4시간+영어)

이후 면접 일정이 잡혔다. 백엔드 개발자가 외국인이라는 이야기를 미리 들었기 때문에, 영어 면접인 것을 감안을 하고 갔다. 하지만 영어보다 면접의 난이도가.. 내 기준 가장 극악이었다.

  • Resume + Github

면접 화면에서 내 Github를 같이 들어가서 코드를 함께 보는 시간이 있었다. 정말 부끄러웠지만 그래도 내가 작업했던 내용이었기 때문에 대답하기에 어렵지는 않았다. 주로 특정 기능을 어떻게 구현했는지, 왜 CBV를 사용했는지 ( SLID에 들어와보니 FBV였다), 특정 라이브러리나 모듈은 무엇을 사용했는지 등등을 아주 꼼꼼히 보셨다. 내가 기능을 구현했기 때문에 쉽게 대답할 수 있었지만 만약에 버스를 탄 프로젝트거나 단순 클론 프로젝트라면 대답을 못했을 듯 하다.

  • 웹 개발 지식

쿠키, 세션의 정의, 사용자가 사이트에 접속하며 이루어지는 과정, http와 https, Rdbms와 nosql, 서버사이드 랜더링 등등 웹 개발자가 당연히 알아야 하는 기본 소양 질문을 많이 하셨다. 그런데 나는 공부가 아예 되어있지 않은 상황이었고, 경험해본 것 위주로만 대답을 드렸다. 여기서 탈락 할 줄 알았다..^^ 모르는 것은 솔직하게 모른다고 하고 넘어갔다.

  • 문제에 대한 해결 방안 제시

나는 정기 결제를 어떻게 구현할 것인가에 대한 질문을 받았고 이에 대한 대답을 했다. 우선 내가 django의 background tasks 모듈을 사용해본 경험이 있기때문에 이 모듈을 사용하여 주기적으로 결제 요청을 하겠다고 대답을 드리자 꼬리 질문이 계속 나왔다.

- 날짜는 어떻게 계산할 것이냐 ( 예 2월은 30일 31일이 없는데 이때 결제한 사람들은 2월에 언제 결제 할 것인지)

- 모델(DB) 에는 어떤 필드가 추가 되어야 할까

- 만약에 결제가 작동하지 않으면 어떻게 tracking 할 것이냐 등등

하지만 압박 면접 같은 느낌은 아니었고 같이 토의하는 느낌이 강해서 편하게 질문을 주시면 어 그러게요? 하면서 대답할 수 있었다.

- 합격

영어 면접이기도 하고 너무 오랜 시간 면접을 보다보니 내가 무슨 말을 했는지도 잘 기억이 안나는 상태에서 면접이 끝났다. 하지만 웹 개발 지식에서 내가 대답을 못한 게 너무 크리티컬 했다고 생각해서 불합격되어도 담담히 받아드릴 준비로 기다리고 있었다.
그리고 며칠 뒤, !합격했다는 메일!과 함께 면접 피드백이 함께 왔다. 면접을 보면 영문 모르게 탈락해서 단순히 낙담하기 쉬운데 SLID는 면접 피드백을 주는 게 지원자를 향한 애정이 느껴졌다.

3. 월 별 인턴일지

9월

  • ERD, AWS architecture diagram 정리

SLID에 들어와서 처음 맡은 업무였다. 당시 SLID 는 ERD 가 업데이트가 오랜 기간동안 되지 않았고, 모델의 구조를 알려고 시작했다가 결국 ERD 를 새로 그렸다. 이와 더불어, AWS 의 architecture 가 어떻게 되어있는지 공부하면서 architecture diagram 도 그렸다. 같은 백엔드 Hacker 파트인 동료 Adriel의 도움으로 이때 AWS 의 전체적인 구조를 배울 수 있었다.

+) 참고로 AWS architecture diagram은 Cloud Mapper 라는 툴이 있어서 굳이 안그려도 알 수 있다. (당시에는 몰랐음)

https://duo.com/blog/introducing-cloudmapper-an-aws-visualization-tool

Introducing CloudMapper: An AWS Visualization Tool

Today we are pleased to announce a new open-source tool from Duo Security for visualizing Amazon Web Services (AWS) cloud environments!

duo.com

  • back office issue 해결

9월에는 Adriel의 업무를 함께 하며 업무를 파악하는 게 대부분이었다. 그런데 back office issue는 당시 Adriel이 다른 업무가 있었고, 급한 issue였기 때문에 내가 맡게 되었다. 문제는 django admin page 에서 검색이 안되거나, 상세 페이지가 안들어가지거나, 리스트가 보여지지 않는 문제들이었고, test server에서 하나씩 테스트해가며 고칠 수 있었다.

문제는 admin에서 상세 페이지가 들어가지지 않는다는 이슈였는데 test server에서는 문제가 없지만 production 에서 문제가 생기는 경우였다. test server에서 이유를 찾을 수 없어서 test 서버와 production 서버의 차이가 무엇일지 곰곰히 생각해보다, db에서 차이가 난다는 것을 생각했다. 그래서 db 중 사이즈가 가장 크면서 상세페이지에서 볼 수 있는 user 필드가 문제이지 않을까 생각이 들어 상세페이지에서 user를 없애니 해결되었다.

소소하지만 내가 SLID에서 첫 PR을 하여 master로 배포된 기능이다.ㅎㅎ

  • test tool research 및 Pytest 도입

DevOps part로 SLID에 온 것이기 때문에 백엔드 업무를 하면서도 계속 Test tool을 리서치하였다. 이때 내가 찾은 test tool은 unit test 와 pytest 였는데 이 중 함수형으로 간단하게 test code 작성이 가능한 pytest 를 우리의 testing tool로 선정하였다. 이후 개발 프로세스가 TDD로 변경되었고 쭉 Pytest 는 유용하게 사용되었다.

10월

  • 새로운 Login API 설계 및 개발
login api 설계를 위한 diagram

10 월부터 본격적인 Sprint 에 참여하며 로그인 api 개선 업무에 참여하였다. SLID 에는 원래 로그인을 하지 않아도 슬리드 기능을 사용할 수 있는 Temp user 가 있었는데. Temp user 를 없애고 기존의 temp user의 db를 로그인 하면 로그인 한 user의 db 로 옮기는 작업이었다. 이를 위해 user의 상태를 나누고, 각 상태별로 다르게 대응하는 api를 제작하였다.

- 새로운 기기에서 회원 가입하는 사용자

- 새로운 기기에서 로그인하는 사용자

- Temp user JWT를 가지고 회원가입 하는 사용자

- Temp user JWT를 가지고 로그인 하는 사용자

그리고 각 경우 별로 edge case가 없는지, 프론트엔드의 legacy 코드에서도 문제가 없을지 등을 꼼꼼히 체크하였다. 내가 생각하는 SLID 의 장점은 개발자들이 모두 진심을 다해 고민한다는 것이다. 특히 Adriel에게도 많이 느꼈지만, 내가 무언가를 설명하면 그걸 단순히 받아드리기 보단, 왜 그렇게 했는지, 그게 최선인지를 끊임없이 고민하여 항상 내 판단보다 더 나은 성취를 만들어낼 수 있었다.

  • 새로운 기기를 사용하면 로그인이 자꾸 풀리는 이슈 해결

새로운 Login API 를 만들며 기존 JWT의 발급 방식의 문제를 알게 되었다. (Token이 새로 발급되며 이전의 Token이 만료되어 로그아웃이 되는 상황) 이 문제를 해결하기 위해 가지고 있는 Refresh Token 이 저장된 Refresh Token 과 일치한다면 Token을 재발급해주는 API를 만들어 해결하였다.

  • CI / CD tool research 및 도입

효과적인 배포를 위해서 많은 tool을 찾아보았고, 그 중 github PR 을 trigger로 설정할 수 있는 github Action을 사용하여 자동 test 를 돌릴 수 있도록 하였다. 내가 한 것은 PR을 날리면 프론트엔드의 Jest 테스트 코드가 자동으로 돌아가는 시스템이다.

  • Postman 도입 및 API document 정리

효과적인 API testing을 위하여 postman을 사용하자고 제안하였고 받아드려졌다. Postman에서 Collection을 설정하고 api를 정리하였으며, 프론트엔드 파트가 쉽게 확인할 수 있도록 각 응답코드 별 example을 저장해두었다. 이 후, postman만 api document로 활용하는데에는 한계가 있다고 느껴, notion의 새로운 페이지를 만들어 api document 를 정리하였다.

11월

  • Email Template 변경

AWS Lambda function을 이용하여 email을 전송할 수 있는 함수를 만들고 이 함수를 cognito의 email trigger 에 등록하여, 사용자가 email로 회원가입을 할 때 인증코드가 custom email로 갈 수 있도록 하는 함수를 만들었다.

  • login edge case 정리

SLID 는 AWS Cognito 기능을 사용하여 로그인 기능을 만들었는데, 이렇게 로그인을 할 때 우리가 만든 장고 서버에서 응답이 오는 것이 아닌 AWS에서 바로 응답을 해주니 문제를 예측하기 어려웠다. 따라서 나는 Cognito 공식 문서를 보며, 우리의 바뀐 login system에서 어떨때 어떤 에러코드가 발생하는 지, 그리고 각 에러 상황에서는 어떻게 대처해야 하는지 정리를 하였다.

각 로그인 경우 별 발생할 수 있는 error와 어떻게 대처해야할 지 적어 둔 diagram&nbsp;

정리를 하다보니 백엔드에서 제공해야하는 API 가 무엇인지 명확해질 뿐만이 아니라, 프론트엔드는 언제 어떤 상황에서 어떻게 서버와의 통신을 해야하는지, 그리고 어떤 페이지로 이동해야 하는지를 알 수 있었고, 디자인은 사용자 관점에서 어떻게 화면이 이어져야 자연스러울지를 설계할 수 있었다.

기술적인 edge case를 발견하기 위해 시작하였지만 결론적으로는 사용자 여정맵과 프론트엔드의 서버 인터페이스까지 영향을 주어 굉장히 뿌듯했던 스프린트이다.

12월

  • Payple 모듈 조사

새로운 결제 시스템이 도입되며 결제 모듈도 Payple로 바꾸자는 의견이 제시되었다. 이를 위해 Payple API 를 조사하던 중, Payple의 정기 결제 시스템이, 보안 키를 받고 보안 키를 사용하여 정기 결제를 할 수 있다는 것이라는 것을 알게되었다. 따라서 미래에라도 정기결제를 언제든지 도입할 수 있도록 Payple로 정기 결제를 하기 위해 키를 저장해두는 게 어떻겠냐는 의견을 제시하였고 제안이 받아드려졌다. 다만 Payple 을 도입하는 프로젝트는 스프린트 기간 상 다음으로 미루어지게 되었다.

  • Payment code refactoring

기존의 Payment 코드를 리펙토링하고 test 코드를 붙이는 작업을 진행하였다. pytest 가 없었던 기존의 코드들에 test 를 새로 추가하고, Postman에 정리하였다. 결론적으로 리펙토링을 통해, 하나의 코드로 되어있던 것은 help function과 main function으로 분리하여 관리할 수 있었다.

4. 회고..

- 적극적으로 수용하는 SLID 문화

나도 내가 파트타임 인턴으로 이렇게 많은 기여를 할 수 있을 것이라 생각하지 않았다. 하나의 스프린트도 온전히 완성할 수 있을까 싶었는데, 인턴 기간동안 세번의 스프린트 참여와, 틈틈히 backoffice issue해결이나 github action 도입 등을 해낼 수 있었다. 이렇게 파트타임 인턴이었던 내가 적극적으로 업무에 참여할 수 있었던 이유는 바로 적극적으로 수용하는 SLID의 문화 때문이라고 생각한다.

SLID에 처음 들어가면 팀 문화에 대해 설명을 해주시는데 그중 1번이 다른 사람은 개개인으로 존중하는 것이다. 팀 문화에 대해서도 정말 할 말이 많은데 아무튼 그래서 그런지, SLID 팀원들은 나를 한명의 프로로 인정해주고, 내가 하는 모든 일을 존중+수용해주셨기 때문에 더 두려움없이 일을 시작할 수 있었다. 만약 업무 지시를 받고 보고를 하고 허락을 받는 그런 시스템이었다면 이렇게 많은 일을 못했을 것이다.

한가지 예를 더 들자면, 내가 postman을 사용하자고 제안을 했을 때, 바로 괜찮은 아이디어라고 인정을 해주셨고, 바로 team postman 결제를 하고, 제안을 한 나보다 백엔드 해커 Adriel이 더 열심히 사용하는 모습을 보며 제안을 하길 잘했다는 생각과 함께 다음번 제안도 더 두려움없이 할 수 있었다.

- 이렇게 많이 배울 수 없었다

SLID 에서 근무하며 모르는 것 투성이인 근무 환경에서 숨쉬듯이 배울 수 있었다. 친절한 Adriel의 도움으로 많은 것을 물어보고 배울 수 있었다. 처음에는 EC2와 RDS만 알던 나의 짧은 AWS 지식이었지만, 사용하는 AWS가 점점 많아지며 Cloud watch, lambda, S3, Cloud Front, IAM, Cognito 등등 수많은 aws의 기능을 사용해 볼 수 있었다. 그리고 Adriel의 덕에 너무 즐겁게 배웠던 이 경험은 내가 DevOps, 클라우드 개발자가 되기로 마음먹게 된 계기가 되었다. Sprint를 진행하며 실패도 하고 성공도 하며, 내가 배운 것들을 손에 셀 수 없을만큼 정말 많은 경험을 하였고 많이 배울 수 있었다.

이 외에도 철저한 gitflow와 PR, 꼼꼼한 코드 리뷰 등은 내가 지금까지 어영 부영했던 내 개발습관을 바로잡는 계기가 되었다. SLID에서 근무를 하고, 우리 졸업프로젝트 깃을 보는데 그렇게 답답한 감정이 들더라..ㅎㅎ 다시는 예전의 더러운 깃으로 못 돌아갈 것 같다. 함께 근무했던 Adriel에게 특히 많이 배웠는데, 변수명 하나도 함부로 짓지않는 Adriel을 보며 많은 반성과 깨달음을 얻었다. SLID에서 근무한 후 조금 더 차분한 개발자가 될 수 있었던 것 같다.

- 앞으로의 나는

사실 SLID 팀에 남아있을까 정말 많은 고민을 했다. Junghyun에게 이주의 시간을 달라하여 2주간 정말 많은 고민을 하였고, 내 결론은 SLID를 나오게 되었다. 여러가지 이유가 있지만 가장 큰 이유는 학교가 아직 한학기 남아있는 상황이었고, 내가 전공 수업을 너무 안들었다는 것이다. 나는 학교에서 학점을 대체할 수 있는 거의 모든 활동을 해보았는데 그러면서 전공 수업은 거의 듣지 않았거나, 벼락치기로 공부하여 머리에 남은게 없는 상황이었다. SLID 에 다니기 전에 나의 활동 경험은 나에게 엄청난 플러스였지만, SLID를 다니며 부족한 나의 운영체제, 네트워크 지식을 마주하며, 공부가 필요하다고 느꼈다.

그리고 내 진로를 분명히 하게 되며, 내가 한 분야에 전문가가 되기 위해선 다양한 경험보다는 전문적인 지식이 필요하다고 느꼈다. SLID의 경험도 배움의 연속일테지만, 다양한 배움보다 이제 내가 관심 있는 분야를 깊게 공부하고 싶어졌다. 따라서 SLID를 나온 후, 내 전문 분야를 만들기 위해서 우선 AWS 자격증을 따며 Cloud Computing에 대한 지식을 쌓아갈 예정이다.


이번 학기 학교와 졸업프로젝트 마무리, 그리고 SLID 인턴까지 정말 숨쉴틈 없이 달려왔던 것 같다. 하지만 후회는 없다. 정말 많이 성장했고 많은 경험을 했으며 SLID와 함께한 4개월은 정말 알찼다..! 슬리드 짱.. 슬리드가 구글이 되는 그날까지..

Special Thanks to Adriel!





+)

슬리드 팀블로그에도 글을 남겼었는데, 아드리엘이 댓글을 달아줬다☺