Graphic Intern Review
신입 개발자의 2024년 상반기 그래픽 인턴 회고록
Last updated
신입 개발자의 2024년 상반기 그래픽 인턴 회고록
Last updated
작년 카카오브레인 이후로 두번째 회고록을 쓰게됐다. 사람들이 회고록을 쓰는 이유는 다양하겠지만, 나같은 경우에는 직접적으로 하기에는 수줍어서 간접적 감사표시와, 나의 성장기록 그리고 배운점들을 정리하는 목적인것 같다. 이건 나의 두번째 회고록이자 그래픽 개발팀의 첫 회고록이다.
1. 회사
그래픽은 이태원에 있는 만화카페 느낌의 오프라인 매장을 갖고 있는 스타트업 회사다. 회사에서 이번에 웹툰과 인스타를 합친, 누구든 만화를 쉽게 공유하고 볼 수 있는 SNS서비스를 시작하였다.
처음 입사했을때 개발팀에는 3명의 인턴을 포함한 6명의 디자이너, 개발자가 있었다. 디자이너, 백엔드, 프런트로 협업을 했었고, 서비스가 출시하고 웹 개발자도 합류하게 되었다.
1-1. 업무
오자마자 부여받은 업무는 AWS람다 이미지 최적화와 로그데이터 마이그레이션 프로세스 구현이다. 당장 프로젝트 구조를 이해하지 못하고 있는 나에게 감사하게도 조금씩 업무를 할당해줬다.
어느정도 도메인과 프로젝트 구조를 이해하고 나서야 프로젝트에 코드를 한줄씩 쓰면서 기여할 수 있게 되었다. (특히 스케줄러(cron)을 활용한 일일 통계 집계 및 슬랙 알림 시스템 구현하면서 더욱 이해도가 많이 높아졌다.)
1-1-1. Lambda 최적화
앱서비스에 이미지 업로드중 간혹가다가 메모리부족으로 인해 오류가 나는 상황이 발생했다. 프로젝트에 적응하는 기간을 포함해서 5일간 노력해봤지만, 해결하진 못했다. 나중에 5월에 해결하긴했다. 그때는 5시간만에 해결했다(메모리 누수가 문제였다). 속도도 최적화는 덤으로..!(지금 생각해보면 왜 해결하지 못하고 있었는지 모르겠다). 맨날 코딩테스트를 공부할때 시간복잡도만 생각했었는데, 공간복잡도가 왜 중요한지 이해를 하게된 순간이다.
1-1-2. 로그 데이터 마이그레이션
AWS의 다양한 기능들을 조금 깊게 들여다볼 수 있는 기회가 있었다. CloudWatch로 집계되는 데이터의 저장비용을 줄이기 위해 S3로 마이그레이션 작업을 하면서 EventBridge, Glacier 등 여러 기능들을 찾아볼 수 있었던 것 같다.
1-1-3. 알림 서비스
가장 시간을 많이 투자했던 기능이다. 알림은 크게 4종류로 나눠져있는데, 좋아요, 댓글, 만화 출시, 팔로잉으로 나눠져있었다. 이 중에 만화 출시가 조금 복잡했었다. 파이어베이스와 연동을 해야했고, Failover, Recovery 처리도 했어야했다.
1-1-4. 유저별 통게 서비스
유저별로 본인의 만화에 대한 통계를 볼 수 있는 탭을 개발했었다. 통계는 여러 테이블의 데이터를 읽어오는 작업이기도 했고, 작가들이 자주 사용하는 기능중 하나라고 생각했기때문에 캐싱이 중요했다. 하지만 그만큼 또 보는 재미가 있는 기능이라 캐싱 기간을 하루로 잡았었다. 이 밖에 다른 통계 기능들도 있었는데, 아쉽게도 우선순위에 밀려서 앱이 출시할때는 제외됐다.
1-1-5. 회원 탈퇴 서비스
유저 완전 삭제 배치를 개발하고 있었다. Hard Delete를 해야했고, 관련된 데이터를 모두 업데이트를 해야하는 무거운 작업이었다. 만족스러운 최적화를 이루지 못하고 출시때 제외됐다.
1-2. 배운점
1-2-1. 클린코드
인턴들의 계약 기간이 끝나고, 나는 인턴 기간을 연장하게 되었다. 총 개발 인원이 4명이 되었고, 팀장님은 전체, 나머지 인원들은 각각 웹, 앱, 서버 개발을 집중적으로 담당했다. 나는 작업을 하면서 PR 리뷰를 최대한 빨리 받아야 효율적으로 개발을 할 수 있었기 때문에, 최대한 간결한 PR을 작성하려고 노력했다. PR 리뷰가 어려워지고 직접 설명하는 시간이 길어질수록 서로의 시간을 잡아먹기 때문에, 내 코드와 커밋들은 최대한 간결하고 읽기 쉽게 작성하려고 노력했다. 코드의 가독성을 높이기 위해 명확한 변수 이름을 사용하고, 함수와 클래스의 역할을 명확히 정의하며, 중복 코드를 제거하는 데 많은 신경을 썼다. 이로 인해 처음 인턴을 시작하고 나서 내 코드는 많이 보기 좋아졌다.
1-2-2. 테스트코드
우리 회사는 따로 QA 엔지니어가 없었다. 그로 인해, 내가 작성한 코드에 대한 책임이 전적으로 나에게 있었다(물론 PR 리뷰를 거치지만). 테스트코드에 집중할수록 내가 작성한 코드의 신뢰성이 높아지기도 했고, PR 리뷰에서도 시간을 많이 절약할 수 있었다. 이러한 이유들로 중요한 엔드포인트를 개발하거나, 복잡한 로직이 포함된 경우에는 테스트코드에 더욱 많이 집중했다. 테스트코드를 작성하면서 다양한 상황을 고려하게 되었고, 이를 통해 코드의 안정성을 높일 수 있었다. 이는 특히 배포 후 버그를 예방하는 데 큰 도움이 되었다. 테스트코드가 잘 작성되어 있으면, 코드 리뷰어가 코드를 검증하는 데 드는 시간이 크게 줄어들어, 리뷰어가 코드의 정확성을 테스트하는 대신 로직과 설계에 더 집중할 수 있게 해주었다.
1-2-3. 버저닝(Versioning)
이번 인턴십에서 서비스 운영을 통해 토이프로젝트에서는 절대로 경험해볼 수 없었던 다양한 것들을 배울 수 있었다. 그 중 하나가 바로 버저닝이었다.
버저닝은 매번 릴리즈가 적용될 때마다 기존 유저들이 사용하고 있는 API나 데이터를 강제 업데이트 없이도 유지할 수 있도록 해주는 중요한 개념이다. 초기에는 새로운 기능을 추가하거나 기존 기능을 수정할 때마다 모든 사용자가 최신 버전을 사용하도록 강제하는 방식으로 운영하는 것이 일반적일 것이라고 생각했다. 하지만, 실제 서비스 운영에서는 각기 다른 버전을 사용하는 다양한 사용자들이 존재하기 때문에 이는 현실적으로 불가능했다.
새로운 기능을 추가하거나 API의 구조를 변경할 떄마다 버전을 명시적으로 관리해야한다는 것을 배웠다. 이를 통해 기존 API를 사용하는 유저들에게 영향을 미치지 않고 새로운 기능을 제공할 수 있었다(/api/v1/users 와 /api/v2/users처럼).
이밖에도, 데이터베이스의 구조가 변경될때마다, 기존 데이터를 유지하면서 새로운 구조를 적용하는 방법을 배웠고, 기존 유저들이 계속해서 서비스를 이용할 수 있도록 버저닝을 통해 항상 하위 호환성을 유지해야되는것을 이해하게 됐다.
1-3 회사의 개발문화
우리 회사는 기업들의 좋은 개발문화들을 따라가려고 노력하고 있다. 점심을 먹으며 다 같이 테크유튜브를 보는 것, 핫한 기술스택을 적용해보는것 등이 있지만, 가장 최근에 도입된, 그리고 가장 마음에 들었던 문화는 1달 1독서다. 개인이 읽고 싶은 개발 관련 서적을 지원받아서 다 같이 1달안에 읽는 거다. 일을 하다보면 힘들어서 따로 공부하기가 쉽지 않은데, 모두 열정을 갖고 공부를 하는 모습을 보니 나도 열심히하게 된것 같다ㅎㅎ.
2. 생활
회사 사무실은 이태원에 위치하고 있다(그래픽 매장 옆 건물). 회사까지의 거리가 멀지는 않지만 대중교통으로는 1시간이 걸렸다. 또한 회사가 언덕위에 위치해서 매번 걸어올라가다보면 다리가 딴딴해지는걸 느낄 수 있었다. 다행히 인턴 연장을 하고 나서는 재택하는 날들이 있었고, 프론트 개발자분과 집이 같은 방향이라 가끔 같이 택시를 타고 가긴했다ㅎㅎ.
2-1. 운동
그래픽 직원들에게만 제공되는 헤택들이 몇가지 있다. 그 중 하나가 운동이다. 사무실 옆에는 조그만 헬스장이 있는데, 거기서 매달 7회 PT를 무료로 받을 수 있다. 나는 일주일에 두번씩 받고, 마지막주에는 따로 돈을 내고 받았다. 이 외에도 수영, 자전거 출퇴근을 했었는데, 무리를 했었는지, 크게 아프게 되었다… 감사하게도 대표님께서 몸이 좋아질수 있도록 아낌없이 지원해주셨다!
(아프다는 얘기를 듣고서, 택시 지원, 오쏘몰, 프로폴리스 등 회복에 도움되는 것들을 보내주셨다!)
2-2. 스프린트
최소한의 커뮤니케이션을 가져가되, 생산성을 높이기 위해 그래픽은 스프린트를 2주단위로 진행합니다. 그래서 월요일, 금요일은 다 같이 모여서 개발하고, 스프린트 플래닝과 회고를 통해서 2주간의 작업들에 대한 계획을 세우고, 회고를 진행합니다.
2-3. 재택근무
마음이 맞는 사람들이 모인만큼, 만나서 일을하게 되면서 잡담이 많아지는 단점이 생겼는데, 우리는 업무의 효율성을 위해 재택을 하면서 게더타운을 많이 활용했다. 각자의 캐릭터를 고르고 회의시간마다 옹기종기 모여서 회의를 하던게 확실히 잡담하는 빈도가 많이 낮아지기도 했고, 업무에 집중을 할 수 있었던것 같다.
2-4. 워크샵
그래픽 대표님은 직원들을 아낌없이 지원해주고 챙겨주시려고 노력한다. 그래픽에서 총 두번의 워크샵을 다녀왔는데, 첫번째는 클래식 공연이었다. 잠시의 여유를 즐기며 좋은 경험을 했었다.
두번째는 사승봉도, 무인도였다. 11일, 12일에 모두 하던일을 일을 잠시 멈추고, 여행을 다녀왔다. 평소에 다른 직원들과 얘기를 나눌 기회가 없었는데, 이번에 많은 얘기를 나누고 추억을 만들었던것 같다 ㅎㅎ.
3. 느낀점
“스타트업은 스포츠팀이다”라고 대표님이 하신 말씀대로, 능력있는 사람들이 소수정예로 팀을 이뤄서 일하는 곳이다. 내가 합류한 동안 많은 일들이 있었고, 일을함에 있어서 많은 것들을 배웠고 시행착오들을 겪으며, 많이 성장한걸 느낄 수 있었다. 내가 기여할 수 있는 부분들에서 최선을 다했고, 그래픽 서비스가 조금씩 커지고 있음에 내가 기여할 수 있는 부분이 앞으로 많이 없을것 같아서 떠나지만, 확실한건 그래픽 개발팀은, 내가 더욱 성장하면 언젠가 다시 합류하고 싶은 팀이다.