티스토리 뷰

반응형

나는 회사에서는 자바와 스프링을 주로 쓰는 백엔드 개발자로 일하지만, 개인적인 사이드 프로젝트에 대한 관심이 꾸준히 있었다. 그래서 개발 속도가 빠르고 유지보수가 편한 기술 스택을 따로 알아보고 공부하기 시작했다. 그러다가 Supabase와 Next.js로 프로젝트들을 만들기 시작했고, 개발 속도 측면에서는 꽤 만족스러웠다.

 

Supabase와 Vercel을 사용하면 서버비용 0원으로 시작할 수 있었고 서버 관리 부담도 거의 없어서 꽤 괜찮다고 생각했다. 프리티어를 넘는 트래픽이 오면 25달러와 20달러 정도는 충분히 낼 만한 프로젝트가 되리라 착각하기도 했다.

 

하지만 현실은 달랐다.
프리티어를 겨우 넘었을 뿐인데 매달 약 50달러의 비용이 발생했고, MAU가 크게 늘지 않으면서 이 고정비가 계속 유지되었다. 광고 수익은 5~10달러 수준이었기 때문에 사이드 프로젝트에 매달 40~50달러를 지출하는 구조는 지속 가능하지 않다는 결론에 도달했다. 게다가 Supabase 스토리지 비용은 특히나 사악하게 비쌌다. 비싼 걸 알면서도 귀찮아서 도입한 내 잘못이 맞지만, 그래도 너무 비싸다는 생각을 하지 않을 수 없었다. (혹여나 Supabase를 쓰려거든 반드시 스토리지는 반드시 S3를 붙여야한다.)

 

리액트와 Next.js에 대한 개인적인 회고도 만족스럽지 않았다. 리액트보다는 Next.js에 대한 불만족이 더 큰데 하이드레이션을 사용해서 프론트와 백엔드코드가 난잡하게 얽히기 시작한다. 물론 내가 메이저하게 사용하지 않고 경험과 지식이 모자라서 그럴수도 있다. ㅠㅠ..


사이드 프로젝트에서는 메인 기술스택과 다른 언어나 프레임워크를 사용하면 개발적인 견문이 넓어질 것이라는 기대가 있었다. 실제로 구현 과정에서 새로운 경험을 쌓기는 했지만, 어느 순간부터는 깊이 있는 공부보다는 구현 자체에만 집중하게 되었고, 그 과정에서 더 깊은 학습이 이뤄지지 않는 한계를 느끼게 되었다. 어찌보면 당연할수도 있다. 빠르게 개발하려고 고른 스택이니 공부할 시간이 있겠는가?

 

이런 고민들이 쌓이던 시점에 Supabase와 Vercel을 벗어나기 위해 마이그레이션을 고민하게 되었고, 그 과정에서 루비 온 레일즈에 자연스럽게 관심이 생겼다. 언어도 프레임워크도 익숙하지 않았지만, 레일즈의 빠른 개발 속도는 상당히 매력적으로 다가왔다. 게다가 hotwired 기술을 활용하면 리액트 없이도 SPA 같은 웹앱을 만들 수 있다는 점이 신선하게 느껴졌다.

 

개발속도가 빠른 웹프레임워크 레일즈, 라라벨 등등을 고민하던 중, 유지보수성과 개발 편의성을 일정 부분 내려놓게 만든 원인은 AI를 활용한 코딩 만족도가 너무 높아졌다는 점이었다. 마이그레이션 비용도 줄었고, 코드 작성 시간도 크게 단축되면서 굳이 익숙하지 않은 Next.js나 레일즈를 개발 편의를 위해 도입할 필요가 없다는 결론에 이르렀다.

 

결국 현재 진행 중인 프로젝트는 스프링부트로 마이그레이션하기로 결정했다. 서버도 DigitalOcean이나 AWS Lightsail로 옮기기로 했다. 이렇게 하면 순수 서버비는 월 5~10달러 정도로 예상되었고, 그러면 광고 수익과 거의 비슷해져 개인 비용 부담이 거의 사라지게 된다.

 

(참고로 레일즈의 hotwired 기술도 스프링부트에서 사용할수 있다.)  https://docs.spring.io/spring-framework/reference/web/webmvc-view/mvc-fragments.html

 

서버 유지보수에 일정한 리소스가 들어가겠지만, 익숙한 기술 스택이고 회사에서는 담당하지 않는 부분(배포과정, 스프링시큐리티 등)까지 직접 다루게 되기 때문에 오히려 메인 스택과의 시너지도 기대된다.

 

회사의 마이크로서비스 환경에서는 안정적인 서버 자원을 기반으로 일하다 보니 어떤 부분에서는 안일해지기도 했는데, 사이드 프로젝트에서는 낮은 서버 자원을 다뤄야 하기 때문에 메모리 관리와 성능에 대한 고민도 다시 하게 되었다. (회사에서는 기본 힙 사이즈가 2~4GB였지만, 라이트세일에서는 256MB의 힙사이즈도 운영이 어느정도 가능한지 고민해본다..ㅋㅋ)

 

결국 이번 경험을 통해 깨달은 점은, 사이드 프로젝트는 새로운 기술을 배우는 재미도 중요하지만 지속 가능하고 효율적인 개발 환경도 중요하다는 것이었다. 익숙하지 않은 기술로 속도를 내기보다, 익숙한 스프링부트와 저렴한 서버 환경으로 안정적인 개발과 운영을 병행하는 것이 장기적으로 훨씬 현실적이고 만족스러운 선택이길 기대한다.

반응형
댓글