프로덕트

아티클

전체 보기
이재일

이재일

프론트엔드 개발자의 MVP 개발스택 추천

DEVELOPER.png

안녕하세요 드로우하타 개발자 이재일입니다.

혹시 이번 디콰 뉴스레터를 보셨나요?

image.png

저희 팀 주연님의 글이 디콰 뉴스레터 아티클 챕터 첫글로 올라왔더라구요. (오예)

스스로 내린 결정과 그 이유를 공유하는게 가장 좋다는 생각이 들었습니다.


그래서 이번 주제는 드로우하타의 개발스택 입니다.

드로우하타의 개발스택은 다음과 같습니다.

1. 앱 개발: React Native

2. API: NestJs

3. 관리자: NextJs

4. DB: supabase

5. 앱 관리: firebase

6. 배포: oracle cloud, docker

그 중에서도 가장 고민되었던 지점인 앱개발 스택 고르기와 서버 스택 고르기에 대해서 말씀을 드리고자 해요.

저에게 처음 개발을 가르쳐주었던 분이 하신 말씀이 있는데요.

"자바스크립트만 알아도 먹고 산다."

하지만 당시에 저는 비전공자에 모르는 것도 많고 욕심도 많아서 javascript 말고도 python, java 도 같이 찍먹해보면서 웹개발, 서버개발... 이것저것 잡다하게 시키면 하는 개발자1로 일하다가 백엔드와 프론트 중 결정의 갈림길에서 프론트를 골라서 여기까지 온 것이죠.

그렇게 저에게 익숙한 스택인 React와 Typescript를 기본적으로 염두해두고 스택을 쌓아나가기 시작했습니다.


1. React Native VS Flutter

image.png

보통 앱개발을 시작하시려는 분들은 두 가지 중에 고민을 많이 하게 되는데요.

저는 개발이 처음이다 하면 Flutter

이미 React, TS 개발을 해봤다 하면 React Native 라고 말씀드리고 싶습니다.

왜냐하면 개발문법을 어차피 익히면서 개발을 해야하기에 아예 처음 배워야하는 입장이라면 저는 Flutter를 추천드리고 싶어요. 하지만 Typescript를 안다면 React Native가 괜찮은 선택이라고 말할 수 있습니다.

저 또한 이미 React Native의 고통스러운 ios, android 설정을 이미 경험해보았기 때문에

처음에는 Flutter로 개발을 했었습니다.

하지만 Flutter에서도 동일하게 배워야하는 Dart 문법과 디자인패턴 등은 굳이? 라는 생각이 들었어요.

거기에 가장 힘들었던 건 계속해서 Nesting 으로 들여써야하는 문법 구조도 저에겐 힘들었죠...

그러다보니 Flutter의 강점인 ios, android 의 보다 쉬운 설정을 체감하기도 전에 코딩 단계에서 너무 힘들었습니다 ;

그래서 flutter로 개발하던 것을 멈추고 다시 React Native로 돌아왔습니다.

2. Node (NestJS) VS Django VS spring boot

image.png

대한민국에서 서버 라고 하면 거의 java의 spring 이죠.

또 강력한 관리자 사이트를 지원해주는 Django도 있구요.

하지만 저는 Node 진영의 NestJs 를 선택했습니다. 분명히 불안한 부분도 있었지만, 아무래도 이미 Node로 서비스를 운영하는 회사들이 많다는 생각이었습니다.

대표적으로 인프런 서비스도 NestJs로 개발되고 있고, 배민에서도 NestJs를 새로운 백엔드 표준으로 내세웠다는 글을 보고나서 나도 해도 되겠다는 생각을 했어요.

비록 현업에서 Node 서버를 운용하는 걸 경험하지 못했고, 단일쓰레드 등 불안한 부분도 있지만, 커뮤니티의 도움을 받아 어찌저찌 해결할 수 있지 않을까 하는 마음입니다.

거기에 아직 node 서버가 부하를 감당할 수 없을 만큼의 서비스가 아니기 때문이에요. 비록 스크립트 언어와 컴파일 언어 같은 언어별 특징에 의해서 성능차이가 존재하지만, 사용자가 아직 0명인 서비스는 뭘로 만든들 (...)

사실 React Native를 선택한 시점부터, 모노레포 를 이용해서 앱과 관리자, 서버까지 하나의 코드베이스에서 관리하고 싶기도 했구요. 만드는 사람이 쉽고 편하게 만들 수 있어야 합니다.


개발자 별 프로젝트 스택 추천

이번 프로젝트를 통해 깨달은 점은, 개발 스택 선택에 있어 가장 중요한 두 가지 요소는 '익숙함'과 '개발 편의성'이라는 것입니다.

이를 바탕으로 대상별 추천 스택을 정리해보았습니다:

대상

앱

서버

프론트엔드 개발자

React Native

NestJS

백엔드 개발자

Flutter

Django or Spring boot

첫 개발, 비 웹개발자

Flutter

Django

왜 이렇게 추천하냐면

가장 중요한 건 익숙한 기술이 있느냐 하는 것이었구요.

두 번째로 중요한 건 개발하기 편한가 였습니다.

React Native와 NestJs는 타입스크립트 진영으로 VScode 하나만 이용하면 되지만,

Django와 Spring boot는 아무래도 Intellij나 Pycharm을 이용해야 하죠.

거기에 Flutter도 ide를 사용해야 하니 Vscode를 같이 이용하는 것보다는

같은 회사에서 출시한 Android Studio를 이용해야 좀 더 편리한 것 같습니다.

추가로 첫 개발을 하시는 분들은 Flutter랑 Django를 추천 드리는데요.

아무래도 Spring과 그 영향을 받은 NestJs는 모두 견고하게 작성을 해야하다보니 코드량이 늘어나서 러닝커브가 꽤 높다고 생각하구요.

Django는 python의 쉬운 문법과 더불어 관리자도 어느정도 지원을 해주기 때문에 더 유리한 측면이 있다고 생각합니다.

React Native는 사실 Typescript와 ios, android의 언어를 모두 다루게 되다보니...

로직작성이 아니라 설정에 더 많은 시간을 소비하게 될 때가 많아요. 🥲

그래서 처음 개발하시는 분들에게는 flutter와 Django로 앱과 서버를 구성하는 편이 더 좋다고 생각합니다.


마치며

Screenshot 2024-09-18 at 1.30.04 PM.png

글에는 담지 않았지만, 모노레포 설정도 NX로 해보려고 하다가 안되서 turbo로 변경하고,

supabase edge 이용해서 서버리스로 구축하려다가 코드 구성 등이 어려워서 다시 백엔드로 구축했어요.

또 supabase의 auth 부분을 이용해서 oauth를 설정해야하다보니 그에 맞게 orm 세팅하는 부분도 있었고,

번역키를 자동화 하고 싶어서 데이터 저장을 구글시트에 할지 데이터베이스에 할지 고민하다 리팩토링과 롤백을 반복했던 시기도 있었습니다.

그렇지만 결국 돌고 돌아서 무사히 정착한 것 같은 기분이 듭니다.

그래도 아직 반영하지 못한 모니터링과 로깅, 언젠가 벗어나야할 oracle cloud 프리티어 환경,

개발 및 스테이징 서버 구축 등의 미션도 남아있어요.

깨달은 것은 다음으로 걸어가기 위해선 현실에 한발자국 딛고 있어야 한다는 것이에요.

예전에 부동산 유튜버 하시는 렘군님 영상을 봤던게 기억에 남는데요.

본업에 80%의 시간, 노력을 쏟고, 자신이 목표로 하는 것에 20의 시간, 노력을 쏟으라고 했어요.

이게 맞는지 정확히 기억이 안나는데 80 20 법칙을 활용해서 하나씩 넘어가는 방법을 사용해야 한다고 하더라구요. (파레토 법칙)

저는 점프점프 하면서 가야 빨리 간다고 생각을 했는데요. 언젠가부터 제자리 점프를 하고 있는게 아닌지 했던 생각이 들었어요. 그래서 본인이 제자리 쳇바퀴를 돌고 있다고 느끼시는 분이 있다면 이 방법을 적용해보는 것을 추천합니다!

이제는 한걸음 한걸음 나아가고 싶어요.

인생도 길게 보려고 하구요.

읽어주셔서 감사합니다 :)

13
15
이재일

이재일

프로덕트를 만들 때 알았으면 좋았을 것들 3가지

developer.png

안녕하신가요? 드로우하타 개발자 이재일 입니다.

때마침 PMC-S24 라는 좋은 기회가 열려서 이렇게 만나게 되었습니다.

만나서 반갑습니다 :)

다들 그러신지는 모르겠지만, 밀리고 밀렸던 배포일이 정말 다가올 것 같은 기분이 듭니다.

이번주 기능개발을 마치고 애플 개발자 계정을 구매했거든요 :)

얼마 전 앱 개발을 마치기 위해서 퇴사를 했는데요. 어느덧 6개월이나 되었어요.

사실 이렇게 길어지게 될 줄은 몰랐는데,,, 그동안 정말 많은 생각과 감정이 지나쳐 갔습니다 ;)

이번 글은 제가 시작할 때 했으면 좋았을 생각들 몇가지를 공유하고 싶습니다.

이걸 알았다면 시간을 조금 더 단축할 수 있었을 것 같아요.


1. 우선은 할 수 있는 것부터 시작하자.

처음에 개발스택을 선정하면서 욕심을 부려봤습니다.

"지금까지 안 해본, 해보고 싶은 스택으로 도전해봐야지"

그렇게 개발을 하다보니 이런 생각이 들더라구요.

"... 지금 이렇게 하나씩 동작방식을 알아가면서 할 때인가?"

저는 다시 익숙한 방식으로 돌아갈 수 밖에 없었습니다.

앞으로 헤쳐나가야 할 길이 구만리인데, 그 길을 가시밭길로 만들고 싶진 않았거든요.

2. 조금 더 나를 내려놓기

저는 개발자로 이루어진 팀에서 일하다가 퇴사를 했습니다.

그러다보니 그 관성이 그대로 이어져 더 좋은 코드를 짜는 것에 집중하며 개발에 임했습니다.

개발적인 원칙을 지키면서 일을 하고 싶었거든요.

그러다가 한 영상을 봤어요.

유명한 호텔 출신의 요리사가 자신의 지점을 갖고 싶다는 생각에 창업을 했는데,

그 사람이 호텔에서의 요리방식을 고집하며 너무나 힘들어하고 있더라구요.

당연히 새로운 가게의 환경에 맞게 음식을 해야하잖아요?

이게 제 이야기 였는지는 몰랐어요. 막상 다가와봐야 알겠더라구요.

저는 새로운 환경에 맞게 개발을 했어야 했던 것이죠.

3. 모든 일을 진심으로 받아들이기

사실 올해 가장 크게 깨달은 바인데요. 그 동안 모든 일을 너무 쉽게 생각했다는 것입니다.

이거는 이렇게 하고, 저거는 저렇게 하면 되는거 아니야? 라는 생각에 쉽게 퇴사를 결정한 것도 있었습니다.

그런데 하나하나 정성을 쏟지 않으면 안되고, 경험하지 않으면 느낄 수 없는 바가 많더라구요.

이번 6개월의 경험으로 모든 일을 너무도 가볍게, 너무도 무겁게 판단하고 받아들이지 않기로 했습니다.

모든 일에는 필요로 하는 만큼의 시간과 정성이 필요한 것 같아요.

너무 빨리 처리하면 후에 다시 처리를 해줘야할 일이 생기니까요 :)


첫 글의 주제를 잡고 쓰면서 이게 사람들에게 무슨 도움이 될까? 라는 생각을 했는데,

유용성이 크게 확신이 들지 않는 내용이라 글을 쓰는게 시간이 오래 걸렸네요 :)

그래도 공감해주시는 분들이 많을 것 같아서, 이 주제로 글을 작성해보았습니다.

개인적으로 디콰 라는 플랫폼의 결이 모험가, 탐험가 라는 느낌을 받았습니다.

모두의 탐험에 제 글이 도움이 되면 좋겠습니다.

P.S. 썸네일 사진은 저희 팀 디자이너 께서 만들어주셨는데, 이쁘지 않나요? 다른 팀도 만들어 보면 좋을 것 같습니다 :)

11
4

포스트

아직 포스트가 없습니다.