최근에 이력서와 포트폴리오를 쓰느라 블로그 운영에 신경을 못썼다. 비록 같은 분야는 아니지만 그 동안 해왔던 내용들을 모두 정리하려다보니 어느새 너무 시간이 많이 지나버렸다. 그래서 다시 블로그를 활성화시킬겸 (시간이 많이 지났지만) 스타트업을 다녔던 회고를 작성해보고자한다. (이전에 개발자로서의 회의감에 대해 글을 올린적 있어 중복되는 내용이 있겠지만... 😂)
내가 즐겨보았던 드라마중 하나는 바로 '스타트업'이다. 회사와 성장하는 이야기를 그린 드라마이고 그 과정에서 발생하는 여러 문제들을 해결해나가는 부분이 낭만있다고 생각했다. 또한 드라마를 보면서 한번도 들어보지 못한 생소한 단어들이 등장하는데, 개발 용어만 공부하던 나에게 있어서 설렘을 부여해줬다. (수지짱...👍)
결국 나는 드라마를 보면서 얻은 신선함(?)과 낭만을 쫒아가기 위해 스타트업에 실제로 도전했다. 그 결과 실력이 부족했음에도 그 누구보다 성공하고 인정받고 싶어하는 내 의지를 높이사 회사에서 같이 일하자는 제안을 받아냈다.
합류한 이후에는 기획, 마케팅, 디자인, 개발까지 총 10명도 되지 않은 인원들이 함께 머리를 맞대어 다방면으로 확장이 가능한 서비스를 개발하기 시작했다. 타서비스들과의 차별점, 유저 친화적인 서비스, 서비스 런칭 이후에도 발전시키기 위한 방향 등 단순히 코드만 작성하는 것을 넘어서 신경써야할게 많았다.. 🫠
또한 건물에서 물이 새고 바선생과 인사도 할 수 있는 노후된 시설이라는 것과 체계가 제대로 잡혀있지 않다는 점에서 많이 당황했었다. 그래도 회사의 문화를 만들어가며 이런 환경을 점차 더 좋은 환경으로 바꿔간다면 평생 안주거리로 삼을 수 있겠다는 긍정적인 생각하며 나아가기 시작했다.
개발팀은 서버 개발자인 나를 포함하여 AOS, IOS까지 총 3명으로 구성되어있었다. 문제는 각자 맡은 분야가 다르다보니 서로의 개발 영역에 관여하기 쉽지 않은 상황이라는 점이었다. 즉, 나는 그 누구의 도움없이 혼자서 서버 개발을 해야한다는 것이다.
서비스 출시일이라도 여유가 있었다면 어느 정도 부담이 덜했겠지만, 하루라도 빨리 앱을 시장에 올려야했기에 개발 속도를 높여야했다. 내가 개발 속도를 높이기 위해서 선택한 방법은 그 누구보다 일찍 출근하고 야근하는 생활을 반복하면서 내 자신을 채찍질하는 것이었다. API 개발이 늦어질 수록 클라이언트 개발도 딜레이된다는 점이 나를 조급하게 만들기도 했다...
물론 나만 열심히 했다는 의미는 아니다. 모두 각자의 분야에서 최선을 다하고 있었다. 그저 내가 못하면 서비스 런칭을 못해 회사 운영에 영향을 미칠 수 있다는 상황이었고, 내가 잘해낼 거라고 믿어주는 팀원들의 마음에 보답해야한다는 마인드가 커져 부담이 되었다는 것이다.
AOS와 IOS 처럼 특정 플랫폼에 종속되어있는 개발 분야의 경우 커버해야하는 영역이 비교적으로 적지만, 내가 맡은 서버 개발은 인프라 영역까지 모두 관리해야했기에 업무량이 많았다. (클라이언트를 무시하는 건 아니다..😅)
업무량은 시간을 더 투자만한다면 충분히 소화할 수 있어 심각하게 받아들이지는 않았지만 문제는 부족한 내 실력이었다. 내가 팀에 합류하기 전까지 나는 EC2 인스턴스 하나만으로 배포하는 가장 기본적인 내용만 숙지한 상태였는데, 개발해야하는 서비스는 SNS 특성상 서버의 확장성과 유연성까지 고민해야했기에 문제였다.
내가 인프라를 구성할 때의 간략히(?) 과정을 적어보자. 😀
당시에 나는 서버의 퍼포먼스를 향상시키기 위해서 K8S, MSA 아키텍처 등 대규모 트래픽을 처리하기 위한 기술들을 적용해야했지만, 인프라에 대한 이해도와 구성 능력이 떨어졌기 때문에 자신의 수준에 맞는 기술들을 찾아야만 했다.
처음에는 가장 단순하게 EC2 인스턴스를 여러 대 구성하고 ALB로 로드밸런싱하도록 구성하는 방법이 있었으나, 보다 더 트랜디한 기술을 활용하고자 새로운 기술들을 탐색하기 시작했다. 여러번의 검색 끝에 찾아낸 새로운 기술은 EB와 ECS를 발견할 수 있었다. 초심자에게는 EB를 많이 추천했지만 나의 기술에 대한 욕심과 도전 정신으로 ECS를 이용하기로 결정했다. (굳이 힘든길을 걸어가는 나...)
ECS와 함께 거론되는 EKS도 있었지만 앞서 말했듯이 K8S에 대한 지식이 부족했고 내부적으로는 GCP, Azure 등 타클라우드 서비스를 혼합해서 사용하는 것이 아닌 AWS 클라우드 서비스만을 적극적으로 활용하자는 의견이 있었기에, 당시 상황에서는 ECS 기술이 가장 서비스에 적합했다. 관리의 편리함도 있었고... 암튼 ECS를 이용했다!!!
(그 외에도 CodePipeline, Lambda@Edge 등 AWS에서 제공하는 많은 서비스를 적극적으로 활용했다. 😎)
💡 오버스펙은 아닌가?!
서비스 초기인데도 오버스펙이라고 생각할 수 있지만, SNS 서비스 특징상 유저의 수가 급격하게 증가할 것이라 판단했기 때문에 비용적인 측면은 어느정도 감수하기로 했다!
AOS, IOS 클라이언트 개발자들은 공통적으로 구현해야하는 UI가 비슷하기 때문에 개발 도중 발생한 문제에 대해서 쉽게 의견을 나눌 수 있었지만, 서버는 혼자서 고군분투해야했다. 데이터베이스 설계와 같이 큼직한 부분들에 대해서는 어느정도 피드백을 주고받을 수 있었지만, 어쨌든 세부적인 내용들을 생각하면서 구현하는 것은 온전히 나의 몫이었기에 외로울 수 밖에 없었다.
또한 같은 분야의 동료나 사수가 없다보니 코드 리뷰 문화도 없었고 그러다보니 직접 작성한 코드에 대해 확신이 없어 개발의 방향성에서도 많은 혼란이 있었다. 서비스의 기둥이 되는 서버 개발이라는 막중한 임무를 부여받은 상황에서 자신의 개발 실력을 의심하니 자존감은 낮아지고 구축한 서버에 확신이 없어 서비스 운영에 문제가 생길 수 있다는 생각에 불안감도 커져만갔다.
회사에서 찾아온 두 번째 위기는 코로나부터 시작되었다. 심지어 IOS 개발자도 팀에서 나가게되어 단 두 명의 개발자가 서비스를 개발해야하는 상황에 놓였다. 그리고 여러번의 회의 끝에 회사에서는 재택 근무로 전환하고 AOS를 먼저 출시하자는 방향으로 대응을 했다.
여기까지는 좋았지만 개발팀은 계속 수정되는 기획으로 인해 지쳐가기 시작했다. 서비스에서 가장 중요한 기능의 로직이 계속 변경되고 데이터베이스 설계마저 다시해야 하는 상황만 5번이나 일어났었는데, 수정할 때마다 다른 코드를 고쳐야하는 연쇄 수정이 일어났다. (물론 내가 의존성이 강하게 결합되도록 코드를 짜서 그런 것도 있다...)
(또... 그 당시 연쇄 수정마🔪(?)로 활동하면서 서류가 제대로 처리되지 않아 월급이 밀리는 사건도 있었다...🥲)
고생 끝에 결국 AOS 앱을 출시했지만 생각했던 것보다 투자자들과 시장의 반응은 좋지 않았다. 문제가 무엇인지 팀원 모두 모여 고민하면서, 우리는 시장에서의 반응을 끌어내지 못하는 가장 큰 원인으로 IOS 사용자가 더 많다는 것을 결론으로 내렸다. (팀원들 모두 AOS 개발자 제외 모두 아이폰이였던...)
그래서 우리는 숙련된 IOS 프리랜서를 고용하여 외주를 맡기는 방향으로 결정했다.
IOS 프리랜서에게 외주를 맡기고 약속된 기한이 다가오기만을 기다리면서 결과물을 기대했으나, 중간에 프리랜서의 개인적인 사정으로 개발이 중단되면서 IOS 앱 출시일이 딜레이되는 문제가 발생했다. (이 부분은 나에게도 책임이 있다. IOS 앱 관련된 내용들은 모두 AOS 개발자가 관리했지만, 왜 내 일이 아니라고 신경도 안쓰고 무심했는지.. 내가 원망스럽다.. 🫥)
또한 투자를 못받게 되면서 4개월 이상의 월급이 밀려 의욕이 떨어지고 정신적으로 지쳐가기 시작했다. 회사에 찾아온 위기로 인해 부정적인 생각을 떨쳐낼 수 없었고, 생활비도 부족해지면서 앞으로의 일에 대해 고민하는 시간들이 많아졌다.
회사에서는 AWS에서 제공하는 스타트업 혜택을 받기로 결정했다. 문제는 혜택을 받기 위해서는 AWS 계정이 회사 도메인으로 되어있어야 했기에 기존에 구축했던 서버를 새로운 계정으로 마이그레이션을 해야하는 상황이 발생했다.
버전 호환성도 생각해야하고 머리가 미칠듯이 아팠지만 일단 결정된 사항이니 틈틈히 버그를 잡아내고 리팩토링하면서 마이그레이션 준비를 하기 시작했다. 한번 구축했던 인프라를 다시 구축하는 것은 어렵지 않았지만, 서버를 이전하는 과정에서 초기 인프라를 구축하면서 인프라에 대한 문서화와 설정들을 관리하는 부분이 미흡했다는 생각이 많이 들었다.
그리고 나는 이 부분을 개선해보고자 또 다시 힘든길을 걸어가기 시작했다... 내가 불편함을 해결하기 위해 선택한 기술은 Terraform을 이용한 IaC 기술이였다.
즉, 가뜩이나 신경쓸것도 많은데 불편함을 개선해보겠다고 스스로 업무량을 늘려버렸다... (Terraform에 익숙해지기까지 다소 시간이 걸렸지만 그래도 코드로 인프라를 관리하면서 속도 향상, 오류 감소, 인프라 일관성 향상 등 다양한 이점들을 경험했으니 후회하진 않는다 ㅎㅎ)
내가 위기들을 이겨내기 위해 선택한 방법은 단순했다. 그저 공부하고 공부하고 공부하는 것이었다. 나약한 생각들은 부족한 실력에서 나왔다고 생각하기 때문이다.
나의 루틴은 이렇다.
출근과 퇴근할 때의 이동시간에는 피곤해서 서서 쪽잠을 자기도 했지만 주로 전공 책을 읽었고, 늦은 새벽까지는 기초를 다시 다져보는 시간들을 가졌다.
밤 늦게까지 공부할 때마다 얻었던건 충격이었다. 이전에 정리해둔 글처럼 지식을 쌓을 수록 나의 코드(스파게티 코드 🍝)에 많은 단점들이 보였기 때문이다.
그래도 내가 성장하고 있다는 증거들이다보니 내 멘탈을 잡아가는데 큰 도움이 되었다.
지금까지 내가 경험한 스타트업에서의 부정적인 내용만 적었지만 사실 얻어간 것들도 많았다. (사람은 기쁜것보다 힘든것을 가장 오래 기억한다고..😅)
내가 얻어간 것은 크게 기술 스킬 성장과 정신적인 부분들이다. 스킬 향상에 대한 내용은 생략하고 정신적으로 얻어간 내용만 이야기해보자.
회사에서 여러 위기를 겪으면서 대표님이 해주신 말씀들이 기억에 남는다. 대표님은 TED의 How to start a movement 영상을 보여주시면서 리더쉽에 관련된 이야기를 해주셨다. 영상의 내용을 간단하게 요약하자면 - "한 남자가 공원에서 춤을 추기 시작했는데 점점 사람들이 모여서 집단으로 광란의 춤을 추게 되었다!"이다.
여기서 대표님은 우리 팀원 모두가 춤을 추는 사람이 되어야 한다고 말씀해주셨다. 자신이 없고 부끄러울 수도 있지만 우리가 주도해나가면 우리의 모습을 보고 뒤를 따라오는 사람들도 많아질거라는 것이다. 나도 내가 리더쉽이 부족한 사람이라는 것을 알고 있었기 때문인지 너무 인상이 깊었다.
또한 회사의 일원으로서의 오너쉽과 개발자가 아닌 사람으로서 개선해나가면 좋을 부분들에 대해서도 많이 말씀해주셨다. (개발자로서 살아가기 위해서는 기술적인 요소도 중요하지만 그것보다 인성이 더 중요하지 않을까싶다. 회사는 사람과 사람이 일하는 장소니까!)
다양한 기술적인 문제들을 해결해나가며 잘 견뎌내고 있었지만 생활비 부족이라는 현실적인 문제에 부딪쳐 결국 퇴사를 하기로 마음을 먹었다. (교통비도 부족했던...)
물론 회사에서는 나의 상황을 해결해주겠다고 했지만, 그 동안 혹사해온 몸과 마음을 추스릴 필요가 있어 퇴사 통보를 했다. 팀원들의 믿음을 저버렸다는 점과 많은 애정을 쏟은 서비스가 활발하게 운영되는 모습을 끝까지 보지못해 마음이 가볍지는 않았다.
끝내 나는 인수인계와 맡은 임무를 모두 마무리한 뒤에 팀원들의 축복과 위로속에서 퇴사를 했다. 그리고 지금은 백수의 생활을 보내며 공부하면서 망가진 몸을 회복하고 있다.
위의 이미지는 내가 퇴사를 하고 좀 지난 후에 받은 메세지다. 이 메세지를 받았을 때 내가 걸어온길이 잘못되지 않았다는 생각에 많이 울컥했다.
비록 끝까지 버티지 못했지만 보다 넓은 업무를 담당하면서 다양한 경험을 쌓을 수 있었고, 자신의 부족함을 보완하고 위기를 극복해내며 얻어낸 성취감으로 자신이 성장하고 있다는 것을 느낄 수 있었던 시간이었다.
하고 싶은 말이 많다보니 전체적인 글 자체가 너무 번잡스러운 느낌이 많은 것 같다. 나중에 조금씩 수정해야겠다. 🙂
대단하십니다.. 저도 스타트업 생각하던 중이었는데 역시 현실은 만만치 않네요 ㅋㅋㅋㅠㅠㅠㅠ 그래도 글 쓰신 개발자님이 실력이 좋으셔서 버틸 수 있었지 않나 싶습니다! 화이팅이네요
고생많으셨어요!!
일반기업(개발관련x) 취업과 스타트업 취업 사이 고민하고 있는 상황에 솔직한 후기를 읽을 수 있어 결정에 큰 도움이 될 것 같습니다.
앞으로 좋은 일만 있길 바라겠습니다~
와 리스펙합니다. 저도 스타트업 근무중인데 제가 생각했던 루틴을 실천하고 계시네요. 고무됩니다.
스프링으로 애플 소셜로그인 구현한 프로젝트를 깃헙에 올리신거 보고 굉장히 도움 많이 받았고( 리드미나 주석 정리를 굉장히 잘하셔서 다른 글보다 큰 도움이 되었습니다. 감사합니다^^) 타고 타고 여기까지 왔습니다. 종종 들릴게요 ^^~ 화이팅입니다!!
안녕하세요!
스타트업 취업 준비하고 있는 신입 개발자입니다.
우선 좋은 글 감사합니다!
많은 참고 되었습니다.
이번에 배달앱 스타트업 면접 준비하고 있는데 면접 질문이 도저히 예상이 가지않아서 조언을 부탁드리고 싶어서 댓글 달게 되었습니다.
회사측에서는 스타트업 개발자의 가장 중요한 역량인 '문제 해결 능력'을 보고 싶다고 합니다.
예를 들면 "~~문제가 생겼을 때 OO씨라면 어떻게 해결하실건가요?" 같은 질문으로요.
개발 관련해서 생기는 문제를 물어보겠지만, 개발 지식에 대해서 너무 자세히 파고들지는 않는다고 합니다. 추가로 그 방법이 비즈니스적으로 어떤 이펙트를 줄 수 있을지도 설명 가능하면 좋다고 합니다.
직무는 앱 개발입니다!
혼자 생각해봤을 때는 회사에서 실제로 있었던 문제를 제게 질문해볼 수도 있다고 생각하는데... 사실 저로서는 전혀 감이 잡히지 않습니다. 꼭 취업하고 싶은 곳이라 이렇게 염치불구하고 문의드립니다.
어떤 질문이 나올지, 스타트업에서 무슨 문제들이 발생하는지, 무슨 문제가 생길지 조언 부탁드릴 수 있을까요?
감사합니다.
잃은 것들도 궁금해요~