개발 입문자를 위한 안내 문서
글을 시작하기에 앞서, 이 섹션은 앱 개발을 처음 접하는 분들을 위해 마련되었습니다. 개발을 공부하는 이들과 함께 성장하고 깊은 유대를 형성하고자 하는 것이 저의 바램입니다. 이러한 목표를 이루기 위해 2024년, 처음으로 멤버십 프로그램을 시작하게 되었습니다. 지난 7년간 개발 커뮤니티를 운영하며, 커뮤니티의 구조적 한계로 인해 긴밀한 관계 형성이 어렵다는 것을 깨달았습니다. 그래서 올해, 서로 더욱 가까워질 수 있는 프라이빗 그룹을 창설하기로 했습니다. 현재 운영 중인 이 프라이빗 멤버십은 매월 $50의 운영비를 기준으로 하고 있으며, 멤버십에 대한 더 자세한 정보는 프라이빗 멤버십 링크를 통해 알아보실 수 있습니다.
앱 개발 산업이 지난 몇 년간 급속도로 발전하면서, 이 분야에 새롭게 도전하는 분들에게 시작점을 찾는 것이 어려울 수 있습니다. 시중에는 철지난 강의와 책들이 많이 있으며, 계속해서 새로운 소프트웨어와 개발 방법론들이 등장하고 있어 입문자들에게든 현 상황에 어떻게 적응해야 할지 혼란스럽기만 합니다. 그리고 이러한 상황은 단순히 입문자들에게만 해당되는 문제는 아닙니다. 경험이 풍부한 개발자들조차도 지속적으로 변화하는 앱 개발 산업의 흐름을 따라잡기 위해 끊임없이 새로운 지식과 기술을 습득해야 하는 도전에 직면하고 있습니다.
앱 개발 분야의 혼란을 조금이나마 해소하고자, 제가 오랜 시간 동안 갈고 닦은 독특한 툴들을 소개하려 합니다. 이 툴들은 입문자들이 앱 개발을 보다 신속하게 시작할 수 있도록 지원하며, 그 과정을 지속 가능한 성장으로 이어질 수 있게끔 설계되었습니다.
시작에 앞서 이 글이 대상이 되는 분들은 다음과 같습니다.
- 예비 창업가, 개발 입문자, 직장인, 프리랜서
이 튜토리얼은 개인 개발자가 개발 과정을 빠르게 시작하고 자신의 프로젝트를 창출하는 데 집중하고 있습니다. 초기 단계에서는 제가 제안하는 방법론과 튜토리얼을 따라 개별적으로 작업하는 것이 중요하며, 이는 나중에 협업 방식에 대한 논의로 이어질 것입니다. 하지만, 효과적인 팀 작업을 위해서는 먼저 이러한 기본적인 경험과 이해를 쌓는 것이 중요합니다.
그리고 이 글은 다음 분들께는 별로 도움이 되지 않을 수 있습니다.
- 취준생 또는 회사 시스템에 깊이 통합된 개발자분들
이는 취업을 위한 기출 문제 해결 방법이나 회사 필요에 맞춘 시스템을 익히는 방식이 아니라, 원하는 앱을 만들어내는 데 중점을 두고 있기 때문입니다.
서비스 개발에 대한 이해
서비스를 개발하는 방법은 앞에서도 말했듯이 매우 다양합니다. 요즘은 대부분 네트워크 통신은 기본으로 되는 기능들이 많아서 이를 가정하고 이야기 하면 크게 다음 형태가 존재할 것으로 보입니다.
- 서버를 구축하고 AWS, GCP, 또는 Azure와 같은 클라우드 서비스 또는 온프레미스 환경을 통해 배포하는 방식으로, 서버와 통신하는 앱 개발.
- Firebase, Supabase와 같은 서비리스 플랫폼을 활용한 앱 개발
- Bubble, Builder.io 등의 노코드 툴을 활용한 앱 개발
과거 IT 서비스 분야에서 성공을 거둔 많은 기업들이 클라우드 방식을 통해 개발을 진행했습니다. 특히 초기에 성공한 기업들은 개발이 완료된 후 주로 온프레미스 시스템(IDC 센터 등)을 사용했습니다. 그러나 앱 개발의 관점에서 볼 때, 서버를 구축하는 방식의 차이는 크게 중요하지 않습니다. 앱 개발자는 서버에서 제공하는 API를 활용하여 자신의 서비스를 개발하면 되기 때문입니다. 이는 클라우드든 온프레미스든 관계없이 적용되는 원칙입니다. 서버리스 플랫폼을 이용하면, 앱 개발자나 클라이언트 개발자가 서버 API를 직접 구축하면서 개발을 진행할 수 있습니다. 이 방식은 서버 관리에 대한 부담을 줄여주며 개발자가 기능 개발에 더 집중할 수 있게 해줍니다. 또한, 노코드 툴을 사용하면 개발 지식이 부족한 사람들도 대시보드 형태로 제공되는 사용자 친화적인 인터페이스를 통해 개발 작업을 수행할 수 있습니다. 이러한 툴은 복잡한 코딩 없이 애플리케이션을 빠르게 구축하는 데 유용합니다.
이 세 가지 카테고리(클라우드, 서버리스, 노코드)를 구분하여 나열한 이유는, 서비스 개발 시 각 방식의 효율성을 다각도에서 평가하기 위함입니다. 시장에는 다양한 도구들이 존재하며, 단지 익숙함에만 의존하여 선택의 폭을 좁히는 것은 매우 편협된 접근 방식입니다. 오히려 다양한 옵션을 고려하여, 각 상황에 맞는 최적의 도구를 선택하는 것이 중요합니다. 이는 개발 프로젝트의 성공에 있어서 중대한 요소가 되기도 합니다.
이러한 맥락에서, 독자들에게 가장 적합한 도구를 추천하라고 한다면, 서버리스 옵션인 2번을 뽑겠습니다. 이는 개발자가 여러 의존성 없이 독립적으로 개발을 진행하고, 제품을 단계적으로 성장시킬 수 있도록 해주기 때문입니다. 반면, Bubble과 같은 노코드 툴은 초기에 빠르게 제품을 시장에 출시하는 데 유용하지만, 제품이 성장하면서 확장성에 제약을 받을 수 있습니다. 특히 코드 작성에 익숙한 개발자들에게는 제한적인 기능과 오히려 복잡한 사용자 인터페이스가 답답함을 유발하기도 합니다. 이러한 프레임워크 선택의 이유를 상세히 설명하는 것은 독자들이 제가 기술을 전파하려는 방향성을 보다 명확히 이해할 수 있게 하기 위함입니다.
클라이언트 선택
클라이언트 개발에 앞서 선택의 폭도 굉장히 다양합니다. 개발자들이 입문하며 여러 개발 경로를 하나씩 탐색하는 대신, 저는 효율성과 장기적 관점에서 지속 가능한 프레임워크를 선택하는 것이 낫다고 생각합니다. 이런 맥락에서 크로스플랫폼 개발을 추천드립니다. 크로스플랫폼 기술은 많은 분들이 잘 알고 계시듯, 여러 플랫폼을 지원하도록 개발된 기술입니다. 이는 주로 안드로이드, iOS, 웹 등을 포함합니다. 많은 플랫폼을 한 번에 배워야 한다는 점이 더 어렵게 느껴질 수 있지만, 실제로는 그렇지 않습니다. 특히, 단순한 프로토타입이 아닌 지속적으로 성장할 수 있는 제품을 개발할 때, 인기 있는 플랫폼을 아우를 수 있어야 하며, 이는 여러 스타트업이 이미 증명한 바와 같이 생산성을 크게 향상시킬 수 있는 훌륭한 도구입니다. 입문자에게는 초기에 정보의 양이 많아 힘들 수 있지만, 장기적인 관점에서 이를 극복하고 나면 향후 원하는 앱 개발을 더 쉽게 이어나갈 수 있습니다.
크로스플랫폼 기술도 React Native, Flutter, MAUI, Kotlin Multiplatform, Cordova, Ionic 등 너무나도 다양하여 여기서도 선택이 필요합니다. 입문자들에게는 생태계가 풍부한 플랫폼을 선택하는 것이 중요합니다. 이에 구글이 개발한 Flutter와 메타(구 페이스북)가 개발한 React Native가 주로 고려됩니다. 이 중에서도, 더 가볍고, 사용하기 쉬우며, 대중적인 언어를 선호하는 측면에서 볼 때 React Native가 적합해 보입니다. 특히 React의 생태계는 그 어떤 것보다도 크며, 이는 그만큼의 편의성과 접근성 덕분이라고 생각합니다. Flutter는 안드로이드 개발 경험이 있는 분들에게 매우 좋은 경험을 제공할 수 있지만 입문자들이 Flutter를 사용할 때, 익숙해지는 데 상대적으로 더 많은 시간이 필요해보였습니다.
저 역시 주로 사용하는 도구이지만, 특히 입문자들이 사용하기에 편한 환경을 구성하여, React Native를 보다 빠르고 용이하게 사용할 수 있도록 지원하고자 합니다. 특히, 리액트네이티브를 활용한 멋진 프레임워크, Expo가 있기에 이를 기반으로 환경을 구성했습니다.
이렇게 구성된 프로젝트는 해당 글에서 확인하고 진행할 수 있도록 안내해 드렸습니다. 하지만 프로젝트를 시작하기 전에 유의해야 할 점이 있습니다. 실제로 가장 시간이 많이 소요되는 부분은 개발 환경을 구축입니다. 과거에 제 직장 선임이 우스갯소리로 이런 말씀을 하신 적이 있습니다. ‘개발 환경 설정이 개발의 절반을 차지한다.’라고요. 그래서 누구나 처음부터 환경을 잡을 수 있게 튜토리얼을 제공했고 소유하신 운영체제에 맞추어 개발 환경설정을 선행 하셔야합니다.
학습법
개발 환경을 모두 설정하고 프로젝트 시작하기 단계까지 완료하신 분들은, 이제부터 개발을 진행하면서 필요한 지식을 차근차근 습득해 나가시면 됩니다. 여기서 완료했다는 이야기는 에뮬레이터나 웹에 소스코드를 실행해서 실행시키는 단계까지를 말합니다.
다음 순서대로 하나씩 학습해 나가는 것을 추천합니다: 먼저 Typescript의 기본 문법을 익히고, 그 다음에는 React를 다루는 방법을 배우며, 마지막으로 Flex와 같은 스타일링 기법을 숙지하는 것입니다. 여기서 중요한 점은 각각의 주제를 교과서처럼 철저하게 공부할 필요는 없다는 것입니다. 필요한 부분만 최소한으로 학습하며 개발을 진행하시면 됩니다. 만약 ‘최소한’이라는 범위가 무엇인지 확실하지 않다면, ‘리액트네이티브 입문 시리즈’를 참고해 주세요!