CRUD 프로젝트 만들기는 이제 그만두세요 (흔한 개발자 실수)

TThe Coding Koala
컴퓨터/소프트웨어자격증/평생교육AI/미래기술

스크립트

00:00:00저는 약 3년 동안 소프트웨어 개발자로 일해왔는데, 솔직히 말해서 제가
00:00:05가장 후회되는 점은 첫 2년 동안 잘못된 것에만 시간을 쏟았다는 것입니다.
00:00:10저는 과거로 돌아가 실수를 바로잡을 수 없지만, 여러분은 그럴 수 있습니다. 대부분의 사람들이 가진 문제는
00:00:15같은 CRUD 애플리케이션만 반복해서 만든다는 것입니다. 스스로는
00:00:20다른 프로젝트를 만들고 있다고 생각하지만, 실제로는 겉모습만 바꾼 비슷한 프로젝트를 만들고 있는 거죠.
00:00:26때로는 블로그이고 때로는 쇼피파이(Shopify) 클론이지만, 그 근본에는 정확히
00:00:31데이터베이스의 항목을 생성, 조회, 수정, 삭제하는 CRUD 원리가 있습니다. 댓글창에서 저를 비난하기 전에 말씀드리자면,
00:00:38저는 초보 시절 CRUD 앱을 만드는 것에 반대하지 않습니다. 그게 바로 학습의 과정이고
00:00:43눈 감고도 할 수 있어야 하는 기본기이기 때문입니다. 여러분이 만드는 모든
00:00:48소프트웨어는 이 기초 위에 세워집니다. 하지만 거기에 너무 안주하면서 그 이상으로 나아가지 못하는 게 문제죠.
00:00:54그 선을 넘어서면 CRUD 앱 너머의 완전히 새로운
00:00:59세계를 경험할 수 있습니다. 안주하던 곳에서 한 발짝만 벗어나면 말이죠.
00:01:04이 영상은 바로 그 방법을 다룹니다. 지금 당장 시작할 수 있는 세 가지를 알려드릴게요.
00:01:10세 번째 방법을 놓치지 마세요. 리스트 중에서 가장 게으른 방법이지만, 의외로 제게
00:01:15가장 많은 가르침을 준 방법이니까요. 그럼 첫 번째부터 시작하죠. 기존 프로젝트를 실무 수준으로 만드세요.
00:01:20이건 인터넷에서 새로운 프로젝트를 찾으러 돌아다닐 필요 없이 지금 당장 오늘 밤부터 시작할 수 있습니다.
00:01:25여러분이 이미 만든 것을 골라보세요. 블로그일 수도 있고, 이커머스
00:01:31플랫폼일 수도 있죠. 그것을 실무 수준으로 만들어 보는 겁니다. 여기서 실무 수준이란,
00:01:37지금까지는 단순히 작동하게 만드는 것에만 집중했다면 이제는 현실 세계에서 진짜 중요한 것들에 집중하라는 뜻입니다.
00:01:43보안, 성능, 신뢰성, 테스트, 관측 가능성 같은 것들이요. 이것들이야말로
00:01:49실무 애플리케이션의 진짜 핵심이니까요. 이커머스 플랫폼을 예로 들어보죠.
00:01:54지금은 기능이 작동하죠. 로그인을 하고, 카트에 물건을 담고, 결제하고, 확인 이메일을 받는 흐름이 완벽합니다.
00:02:01하지만 계획대로 일이 풀리지 않을 때를 대비한 설계는 아마 되어있지 않을 겁니다.
00:02:07거기서 바로 보안이 중요해집니다. 기본적으로 자신의 앱에서 결함과 취약점을 찾아내는 거죠.
00:02:13요청을 살짝 바꾸는 것만으로 다른 사용자로 로그인할 수 있는지, 아니면 결제 경로에서
00:02:18음수를 입력해도 결제가 승인되어 고객에게 오히려 돈을 입금하게 되는지 확인해보세요.
00:02:23제 말을 믿으세요. 앱이 배포되자마자 5분 안에 누군가 정확히 그런 시도를 할 겁니다.
00:02:27그다음은 성능입니다. 상품 페이지에 100명의 가짜 사용자를 동시에 접속시켜 보고 무슨 일이 일어나는지 보세요.
00:02:33100명이 한꺼번에 데이터베이스를 조회할 때 무엇이 망가지는지 확인하세요. 지금 여러분의
00:02:38앱은 오직 아주 인내심 많은 단 한 명의 사용자에게만 테스트되었으니까요. 그다음은 테스트입니다. 배포하기 전
00:02:452분 동안 앱을 클릭해보는 것만으로는 부족합니다. 실제 자동화된 테스트가 필요하죠.
00:02:50이 과정에서 두 가지를 동시에 배울 수 있습니다. 좋은 테스트 케이스를 작성하는 방법과,
00:02:56GitHub Actions 워크플로우 같은 도구를 설정해서 리포지토리에 변경 사항을
00:03:01푸시할 때마다 자동으로 테스트가 실행되게 하는 방법이죠. 그게 실제 실무 워크플로우니까요. 마지막으로,
00:03:07관측 가능성(observability)입니다. 이건 그냥 멋진 말이고, 새벽 3시에 문제가 생겼을 때
00:03:13정확히 무슨 일이 일어났는지 알아낼 수 있느냐는 뜻입니다. 적절한 로깅, 메트릭, 그리고 문제가 생겼을 때
00:03:19앱이 스스로 알릴 수 있도록 만드는 것을 의미하죠. 기본적인 CRUD 앱에 이런 것들을 추가하는 데 집중하면
00:03:25캐싱, 속도 제한, 큐, 데이터베이스 인덱싱, 로드 밸런싱 같은 것들을 자연스럽게 배우게 됩니다.
00:03:32정말로 딱 하나의 프로젝트로만 해보세요. 그러면 다른 수십 개의 평범한 CRUD 앱을 만드는 것보다
00:03:38실제 시스템이 어떻게 작동하는지에 대해 훨씬 더 많이 배우게 될 겁니다.
00:03:44이제 두 번째입니다. 이건 조금 뻔할 수 있는데, 정말로 복잡한 것을 만들어 보세요.
00:03:50무엇을 만들지 막막하다면, 여러분이 매일 사용하는 기존 도구를 골라서
00:03:56처음부터 똑같이 만들어 보세요. 이것이 바로 개발자에서
00:04:01엔지니어로 도약하게 해주는 프로젝트입니다. 화면에 보이는 이 플랫폼이 궁금하시다면, 'CodeCrafters'라고 합니다.
00:04:06대중적인 실무 도구들을 제시하고 처음부터 직접 만들어 보도록 도전 과제를 줍니다.
00:04:12코드를 알려주지는 않아요. 로드맵만 제시하고 나머지는 스스로 알아내야 하죠.
00:04:17저도 직접 해봤는데 정말 유용했습니다. 관심 있으시면 설명란의 링크를 확인하세요.
00:04:23자, 이제 세 번째입니다. 이건 솔직히 이 리스트에서 가장 게으른 방법입니다. 바로
00:04:29포스트모템 보고서를 읽는 것입니다. 여기서 포스트모템이란 실제 사망 확인이 아니라, 기술 업계에서
00:04:36심각한 사고가 발생한 후 회사가 작성하는 보고서를 말합니다. GitHub나 Cloudflare 같은 대기업들도
00:04:42모두 자신들의 실수를 공개적으로 발표하죠. 예를 들어, 이건 바로 Cloudflare의
00:04:47지난 11월 장애 당시의 포스트모템입니다. 안을 들여다보면 전체 이야기를 읽을 수 있죠. 사건이 정확히
00:04:53무엇이었고, 어떤 영향을 미쳤으며, 무엇이 원인이었고, 어떻게 해결했는지 말입니다. 이걸 읽으면 시스템이
00:04:59대규모 테크 기업에서 어떻게 운영되는지 배울 수 있습니다. 제 말을 믿으세요. 이런 보고서
00:05:04하나에서 기대 이상의 것을 얻을 수 있을 겁니다. 일주일에 하나씩만 읽어도 단 한 줄의 코드가
00:05:10빅테크 기업에서 어떤 문제를 일으킬 수 있는지 배울 수 있습니다. 오늘 내용은 여기까지입니다. 옛날 프로젝트를 업그레이드하고,
00:05:16정말로 복잡한 것을 하나 만들어보고, 포스트모템 보고서를 읽는 습관을 들여보세요. 이건
00:05:21제가 직접 하는 방식이기도 합니다. 이 리스트에 추가하고 싶은 게 있다면 댓글로 알려주세요.
00:05:26제 뉴스레터를 구독하시면 개발자분들에게 유용한 이런 콘텐츠를 매주 메일로 보내드립니다.
00:05:31이번 영상은 여기까지입니다. 도움이 되셨다면 많은 관심 부탁드려요.
00:05:37다음 영상에서 뵙겠습니다.

핵심 요약

단순한 CRUD 프로젝트 반복을 멈추고, 기존 앱에 보안과 테스트 등 실무 수준의 설계를 적용하거나 포스트모템 보고서를 분석함으로써 개발자에서 엔지니어로 도약해야 합니다.

하이라이트

  • 반복적인 CRUD 애플리케이션 생성에서 벗어나야 실무 수준의 소프트웨어 설계 역량을 확보할 수 있습니다.

  • 기존 프로젝트에 보안, 성능 테스트, 관측 가능성 기능을 추가하면 실제 운영 환경의 핵심 요소를 배울 수 있습니다.

  • 상품 결제 경로에서 음수를 입력하거나, 요청을 조작해 타인으로 로그인하는 등 실제 발생 가능한 보안 취약점을 직접 검증해야 합니다.

  • 자동화된 테스트 케이스 작성과 GitHub Actions를 활용한 배포 워크플로우 구축은 실무 개발의 필수 과정입니다.

  • 대기업의 포스트모템 보고서를 매주 하나씩 읽으면 시스템 장애의 원인과 대규모 인프라 운영 방식을 효과적으로 파악할 수 있습니다.

타임라인

CRUD 프로젝트 반복의 함정

  • 반복적인 CRUD 앱 구현은 기초 학습에는 유효하지만, 그 이상으로 나아가지 못하는 것이 문제의 핵심입니다.
  • 겉모습만 다른 블로그나 쇼핑몰 클론은 모두 데이터베이스의 생성, 조회, 수정, 삭제라는 동일한 원리 위에 세워져 있습니다.

소프트웨어 개발 초기 단계에서 CRUD 앱을 만드는 것은 기본기를 다지는 필수 과정입니다. 하지만 이러한 방식에 안주하게 되면 데이터베이스 기반의 단순 기능 구현을 넘어서지 못합니다. CRUD의 틀을 벗어나야만 실제 시스템을 이해하고 더 넓은 개발 세계를 경험할 수 있습니다.

기존 프로젝트의 실무 수준 업그레이드

  • 기존에 만든 프로젝트에 보안, 성능, 테스트, 관측 가능성을 추가하는 것이 실무 역량을 높이는 가장 빠른 길입니다.
  • 100명의 가상 사용자를 동시에 접속시켜 데이터베이스 부하를 확인하는 등 인위적인 부하 테스트가 필요합니다.
  • 새벽 3시에 발생하는 장애 원인을 파악하기 위해 로깅과 메트릭을 포함한 관측 가능성 시스템을 구축해야 합니다.

실무 수준의 애플리케이션은 단순히 작동하는 것을 넘어 보안과 성능이 보장되어야 합니다. 결제 시 음수 금액 입력이나 권한 없는 계정 접근 같은 취약점을 스스로 찾아내야 합니다. 또한 자동화된 테스트 도구와 GitHub Actions를 사용하여 배포 파이프라인을 구축하면 실제 엔지니어링 환경을 배울 수 있습니다.

엔지니어링 역량 강화를 위한 심화 학습

  • CodeCrafters와 같은 플랫폼을 통해 기존 도구를 처음부터 직접 구현해보는 과정이 개발자에서 엔지니어로의 전환을 돕습니다.
  • GitHub이나 Cloudflare 같은 기업이 공개한 실제 장애 보고서인 포스트모템을 읽는 것은 대규모 시스템 운영을 배우는 효율적인 방법입니다.
  • 매주 하나의 포스트모템을 분석하면 코드 한 줄이 실무 시스템에서 어떤 연쇄적인 문제를 일으키는지 파악할 수 있습니다.

매일 사용하는 복잡한 도구를 스스로 처음부터 만들어 보는 도전은 매우 중요합니다. 또한 기술 기업의 실제 사고 기록인 포스트모템은 이론적인 학습보다 훨씬 생생한 교훈을 제공합니다. 이러한 보고서를 지속적으로 읽고 습득하는 습관은 대규모 시스템이 실제 운영 환경에서 어떻게 관리되는지 이해하는 데 큰 도움이 됩니다.

커뮤니티 글

모든 글 보기