스타트업/기술 블로그

회사를 갈아엎는 기술 체질 개선

2021-06-27 / 조회수 715

이 정도면 회사를 갈아엎는다고 볼 수 있을 정도의 변화입니다. 지난 몇 달간 기술적인 체질 개선을 위해 어려운 선택들을 실행했습니다. 과거에는 저희에게 익숙하고 빠르게 개발할 수 있는 방식들을 고집했습니다. 이제는 고객사에서 개발자 채용과 인수인계를 쉽게 할 수 있도록, 개발자들에게 가장 인기 있고 보안과 사용자 증가에 대비된 프론트/백엔드/시스템으로 전환하였습니다. 모든 신규 고객사 프로젝트가 새로운 스택으로 개발 중입니다.

백엔드: 노드/장고로 확장

백엔드 스택은 파이썬 장고와 노드로 확장하였습니다. 기존에는 루비온레일즈만 고집하였었죠. 스택 확장이란 말은 참 간단한데, 기존에는 전사적으로 한 가지 스택에 최적화되어 있었기 때문에 새로운 스택에 대한 베스트 프랙티스를 빠르게 쌓기 위해 각 스택의 리드를 맡은 개발팀장님들이 굉장히 고생하셨습니다.

단순히 장고/노드 경력자를 채용해서 장고/노드 프로젝트를 맡기는 방식을 선택하지 않고, 저희 회사에서 2년 정도 근무하시면서 레일즈로 10개 이상의 플랫폼을 만들어보신 팀장님들이 3개월에 걸쳐서 레일즈의 개발 효율성을 장고와 노드로 이전하는 과정을 거쳤습니다.

아직 노하우가 많이 쌓이기 전에 착수한 장고/노드 프로젝트는 시간 단위로 발생하는 개발 비용의 일부를 저희가 부담하는 방식으로 고객사의 프로젝트 비용을 조정해주어 레일즈 프로젝트와 금액 차이가 크게 나지 않도록 관리하고 있습니다.

확장된 스택에 맞추어 베스트 프랙티스가 정립되고 코드 라이브러리가 쌓인 상태여서 이제 신규로 착수하는 노드/장고 프로젝트들은 어느 정도 레일즈만큼의 개발 생산성이 확보가 되었습니다.

프론트엔드: React와 Next.js 도입

기존의 풀스택 모노리스 구조에 Ajax를 부분적으로 사용하던 방식을 벗어나, 4월부터 수주한 모든 신규 프로젝트는 프론트엔드를 리액트로 전환하였습니다. 모바일앱은 네이티브앱과 동작이나 성능 차이가 거의 나지 않는 하이브리드앱 개발 기법을 찾아내었고, 반응형웹은 SEO가 가능하도록 서버사이드 렌더링을 고려한 Next.js로 구축하고 있습니다.

최근에는 프론트엔드 개발자들을 주로 신규 채용하였고, 베스트 프랙티스와 코드 베이스를 쌓고 있습니다. React-Query, Recoil, Tailwind 등 코드량을 줄이고 복잡도를 낮추는 효율적인 기법들을 찾아낼 때마다 바로바로 적용하고 있습니다. 컴포넌트 관리를 위한 Storybook과 테스트 자동화를 위한 Cypress, 효율적인 데이터 전달을 위한 Graphql은 아직 도입 전이지만 도입 우선순위가 높은 기술들입니다.

시스템: AWS 클라우드로 이전 및 다양한 AWS 솔루션의 활용

모든 신규 프로젝트를 AWS 기반으로 변경하였습니다. 기존에는 카페24 임대 서버 한 대에 웹 서버와 애플리케이션 서버, 데이터베이스 서버, 채팅 서버, 인증 서버, 파일 저장소를 한 번에 세팅하였습니다. 서버 설정은 쉬웠지만 사용자가 크게 증가해 시스템 확장을 하려면 결국 AWS 등으로 이전했어야 하는데 이제는 초기 출시부터 보안과 확장이 고려되어 있습니다.

데이터베이스와, 웹서버, 앱 서버, 프론트엔드 배포, 네임 서버, 인증 서버, 서버리스 백그라운드 처리 등을 모두 분리하여 AWS의 다양한 서비스를 사용하고 있고 배포 과정도 CloudFormation과 CDK를 이용해 상당 부분 자동화하였습니다. EC2, RDS, S3 등 기본적인 분리 외에 인증 시스템은 AWS의 Cognito, 채팅 백엔드는 AppSync의 Pub/Sub, 모바일 백엔드 자원과 권한 관리는 Amplify, 네임서버는 Route53, 이미지 처리는 Lambda, 메일 발송은 SES를 사용하고 있습니다. 기존의 모노리스 구조에서 점차 마이크로서비스 구조로 전환되고 있습니다.

인썸니아는 AWS 스카우터 제휴사로서 모든 고객사에게 550만 원가량의 AWS 크레딧을 제공해주고 있습니다. 고객사 입장에서는 2년 간 서버비 부담이 없다고 볼 수 있고 이미 개발이 끝나 서비스를 운영 중인 기존 고객사들에게도 안내하여 크레딧을 제공하고 필요한 경우 서버 이전 작업을 진행하였습니다.

그리고 AWS의 여러 솔루션 아키텍트분들이 몇 번씩 저희 회사 방문하여 AWS 솔루션 관련 강의를 해주셨고 아마존의 기업 문화와 스타트업 플랫폼 스케일업 사례에 대한 세미나를 열어주시면서 기술적/경영적 지원을 아끼지 않고 계십니다. 저희는 머신러닝이나 AI, 라이브 스트리밍, AR 등 AWS의 더 많은 서비스 도입을 검토하고 있고 주요 임직원은 AWS 자격증 준비하고 있습니다.

저도 요즘은 개발을 하느라 바쁩니다

저 역시 새로운 백엔드/프론트엔드/시스템에 적응하고 학습하느라 업무시간뿐만 아니라 퇴근 후와 주말에도 코딩을 하고 강의를 보고 학습을 하고 있습니다. 저는 위에서 언급한 대부분의 스택과 솔루션들을 얼추 사용할 줄 알지만, 기술 리더십을 가지고 설계의 장단점을 빠르게 판단하려면 각 기술에 대해 저 개인의 숙련도를 좀 더 끌어올려야 한다고 생각합니다.

개발자 출신 대표이사도 어느 정도 시점이 지나면 개발을 놓고 경영을 해야 한다는 것이 상식처럼 받아들여지지만, 저희 구조와 규모에서는 제가 기술적으로 연구하고 리딩을 하는 것이 아직까지는 전사적인 효율성을 끌어올리는 상황입니다.

그래서 최근에는 외부 미팅도 잡지 않고 업무와 관련된 전화가 아니라면 통화가 잘 안 됩니다. 신규 프로젝트에 대한 문의도 저희가 잘할 수 있는 프로젝트가 아니라면 이전보다도 더 소극적으로 응대를 하고 있습니다. 저를 뵙고자 하시는 분들에게는 급한 아젠다가 있는지 여쭤보고 만남을 뒤로 미루고 있습니다. 너른 양해 부탁드리겠습니다.