간혹가다가 레거시 코드가 서비스에 큰 장애를 불러일으키거나, 유지 보수하기 힘든 상황을 만듭니다. 때로는 레거시 코드를 재사용하는 것보다 새로운 코드를 작성하는 것이 더 효율적인 경우가 있는데요, 이런 레거시 코드를 걷어내고 서버를 리뉴얼하는 과정을 소개하려고 합니다.
플레이키보드는 ‘키보드 꾸미기 앱’에서 ‘키보드 콘텐츠 플랫폼’으로 확장하기 위해 앱 리뉴얼을 진행했으며, 서버도 서비스의 변화와 성장에 맞춰 유연하고 안전하게 대응하기 위해 레거시 코드를 유지보수하지 않고 새롭게 서버를 리뉴얼하기로 결정했습니다.
플레이키보드의 서버 개발자로 입사한 지 한 달이 지난 후 서버 리뉴얼 작업을 시작했습니다. 약 4개월간 서버 리뉴얼 작업을 진행하면서 서버 리뉴얼 & 데이터 마이그레이션 작업을 모두 완료했습니다. 주니어 개발자가 서버를 맨 처음부터 리뉴얼하는 과정은 길고도 험난했고, 이 과정을 하나하나 소개하려고 합니다.
기반부터 다시 개발하는 상황인 만큼, 기반을 탄탄하게 다지고 확장성을 고려하여 기존 서버 기술 스택을 완전히 갈아엎기로 결정했습니다. API 서버 기술 스택은 Typescript와 Express를 사용했고, 데이터베이스는 MySQL에서 MongoDB로 변경했습니다.
기술 스택 뿐만이 아닌 클라우드 플랫폼도 마이그레이션을 진행하기로 결정했습니다. AWS는 많은 레퍼런스와 다양한 기능을 제공하고 있어서 기존에 사용하던 Azure에서 AWS로 서버를 마이그레이션 했습니다.
이 외에도 코드 퀄리티를 위해 항상 신경 쓰면서 개발을 진행했고, 유지보수를 편하고 빠르게 하기 위해서 코드를 체계적으로 짜기 위해서 디자인패턴을 적용하는 등 코드 퀄리티에 대해서도 큰 노력을 기울였습니다.
레거시 서버보다 깔끔한 코드 구성과 주석 및 문서화, 일관된 디자인 패턴을 적용했고, 기존 서버와 기술 스택도 다르며, 인스턴스도 완전히 새롭게 구축해서, 약 5배 이상의 성능 향상을 이뤘습니다!!
기존 레거시 서버보다 훨씬 빠른 속도와 더 효율적인 서버 리스폰스를 제공하며, 훨씬 더 안정적으로 서버가 작동할 수 있도록 모든 준비를 마쳤습니다!
처음에는 레거시 코드를 유지보수를 하며 서버를 관리하려 했으나. 처음 본 서버의 모습은 개발자로서 지켜만 볼 수 없는 상황이었고 서버를 새로 개발하는 것이 훨씬 더 효율적이라고 생각했습니다. 마침 앱 리뉴얼이 진행되고 있다고 하셔서 저는 과감하게 서버 리뉴얼을 진행하면 좋을 것 같다고 제안했고, 저를 믿고 서버 리뉴얼을 맡겨주셨습니다.
개발자로서의 첫 업무였고, 끊임없이 본인 코드에 만족하지 않고 계속해서 발전 시켜 나가는 제 모습을 보고 주니어 개발자임에도 불구하고 저를 믿고 서버 리뉴얼이라는 중대한 업무를 맡겨주셨으며, 저를 믿고 함께 개발해왔던 팀원분들께 너무나도 고마웠습니다 :)
개발자 팀원분들과 같이 협업하면서, 어떤 식으로 서버와 클라이언트가 함께 맞춰가는지 논의해보고, 클라이언트에서 사용하기 편하도록, 일관적인 패턴을 통해서 개발자 팀원분들께 큰 신뢰를 얻었다고 생각합니다.
저도 서비스를 리뉴얼하고, 제가 만든 결과물이 사용자들에게 제공된다는 가지게 되었고, 또한 팀원분들의 신뢰를 바탕으로 플키팀에서 빠르게 성장할 수 있었고, 플키팀과 제가 함께 성장할 수 있는 계기가 됐으며, 함께 일한다는 협업의 경험이 저를 개발자로서 한층 더 성장시켰다고 생각합니다. :)