10년 차 소프트웨어 엔지니어가 알려주는, 오늘부터 앱 개발을 시작한다면 이렇게 하겠다
I'm a software engineer with a decade of experience. This is how I'd approach learning to build apps if I were starting from scratch today:
핵심 요약
AI로 코딩할 때 놓치기 쉬운 시스템 아키텍처와 인프라의 핵심을 짚어주는 실전 가이드.
- 시스템 아키텍처 — 프론트엔드, 백엔드, 데이터베이스, 인프라의 유기적 연결을 이해함.
- 인프라의 중요성 — AI가 놓치기 쉬운 보안, 배포, 모니터링 등 앱의 안정성을 결정하는 요소를 다룸.
- 실전 배포 준비 — 도메인 연결, 환경 변수 관리, 인증 등 실제 서비스 운영을 위한 필수 과정을 설명함.
- 지속적 관리 — 버전 관리, 테스트, 모니터링을 통해 앱을 안정적으로 유지하는 방법을 제시함.
이 글은 어떤 분들을 위한 것인지 설명해 드릴게요. 만약 여러분이 아래에 해당한다면, 제가 도움을 드릴 수 있을 것 같습니다:
- 코딩을 처음 시작하는 분
- 수년간의 훈련과 노력 없이는 불가능했던 마법 같은 능력을 코딩이 어떻게 열어주는지 보고 놀란 분
- 사업이나 앱 아이디어를 꿈꿔왔지만 어디서부터 시작해야 할지, 어떻게 만들어야 할지 몰랐던 분
- 멈추지 않고 vibe coding을 하며 토큰을 펑펑 쓰고 계신 분
- 무엇이 안전한지, 시스템을 어떻게 구조화해야 하는지, 시스템끼리 어떻게 상호작용해야 하는지 확신이 없는 분. 즉, 코드 자체를 제외한 배관 공사, 즉 호스팅, 인증, API, 버전 관리, 테스트, 분석 등과 같은 부분들입니다.
이 중 하나라도 공감하신다면, 제가 도와드릴 수 있습니다! 다만 주의할 점은, 저는 스타트업을 만들거나 사용자를 확보하고 마케팅하는 등의 전문가가 아닙니다. 제가 전문적인 경험을 많이 가지고 있는 분야는 바로 위에서 언급한 마지막 항목입니다.
그럼 시작해 볼까요!
논란의 여지가 있을 수 있지만, 제가 여러분의 입장이라면 코드라는 가장 낮은 수준부터 시작하지 않을 겁니다. 사실, 저는 정반대로 가장 높은 수준에서 시작할 것입니다.
그게 무슨 뜻일까요?
오늘날 시작하는 사람들에게 가장 중요한 것은 견고한 애플리케이션을 만드는 근본적인 원리를 높은 수준에서 이해하는 것이라고 생각합니다. 바로 시스템 아키텍처죠. 이 글의 나머지 부분에서는 바로 그 내용을 다룰 것입니다. 안전한 풀스택 소프트웨어 애플리케이션의 구성 요소는 무엇인가에 대해서요. 다룰 내용이 너무 많아서 이번에는 폭넓게 다루는 수준으로 유지하겠습니다. 사람들이 관심이 있다면, 아래 나열한 각 주제에 대해 전용 게시물을 작성할 수 있습니다(솔직히 그러고 싶네요).
그렇다면 소프트웨어 애플리케이션의 주요 아키텍처는 무엇일까요?
네 가지 주요 구성 요소가 있으며, 각각 아래에 많은 세부 사항이 있습니다.
- 프론트엔드 -> 사용자가 보는 것. 웹사이트, 모바일 앱 등
- 백엔드 -> 앱의 주요 로직과 규칙
- 데이터베이스 -> 데이터가 저장되는 곳
- 배관(Plumbing) -> 모든 것이 연결되고 유지되는 방식
이 모든 것에 대해 몇 시간이고 이야기할 수 있지만, 간결하게 하기 위해 가장 영향력이 크고 가장 큰 격차를 보이는 4번, 즉 배관에 집중하려고 합니다. 왜냐고요? Claude나 사용하는 에이전트에게 프론트엔드, 백엔드, 데이터베이스를 설정해달라고 하면 아주 쉽게 해낼 수 있기 때문입니다. 사실, 여러분이 vibe coding으로 만든 앱들은 이미 그렇게 했을 겁니다! 앞의 세 가지 주제도 다룰 내용이 많지만, 배관은 노련한 팁이 가장 큰 도움이 될 영역이라고 생각합니다.
배관(Plumbing) -> 모든 것이 연결되고 유지되는 방식
여기서부터가 진짜입니다. vibe coding으로 무언가를 만들고 실행되면 다 된 것처럼 느껴집니다. 다 된 것처럼 보이죠. 하지만 여러분이 보고 있는 것은 빙산의 일각, 즉 수면 위로 드러난 부분일 뿐입니다. 배관은 수면 아래에 있어 아무도 보지 못하지만, 여러분의 앱이 주말용 장난감인지 아니면 실제 사람들이 데이터와 돈을 믿고 맡길 수 있는 진짜 서비스인지 결정하는 모든 것입니다. (이것은 또한 여러분이 요청하지 않으면 AI가 기꺼이 건너뛸 부분이기도 합니다. 그래서 이름 정도는 알아둘 가치가 있습니다)
저는 이것을 네 가지 질문으로 그룹화했습니다. 여러분의 앱에 대해 이 질문들에 답할 수 있다면, 이미 오늘날 서비스를 출시하는 대부분의 vibe coder들보다 앞서 있는 것입니다.
모든 것이 어떻게 서로 소통하는가?
프론트엔드, 백엔드, 데이터베이스는 하나의 덩어리가 아닙니다. 이들은 끊임없이 메시지를 주고받는 별개의 조각들입니다. 이것은 보이지 않지만 항상 작동하는 부분입니다. 높은 수준에서 대부분의 애플리케이션은 다음을 통해 이루어집니다:
- : 프론트엔드가 백엔드에 무언가를 요청할 때 사용하는 '문' 세트("이 사용자의 주문 내역을 줘"). 다른 방법들도 있지만, 처음에는 이 방식에 집중하는 것이 좋습니다.


