SOFTMOA PRINCIPLE

왜 정규개발인가

쉽고 대충, 빠르게 만든 시스템은 운영에서 한계를 만나 결국 다시 만들어집니다. 공개된 재구축 기록과 AI 개발 사고로 소프트모아가 정규개발을 지향하는 이유를 정리했습니다.

rebuild.diff공개된 재구축 기록 4건

@@ Zalando · 2010 @@

이전 Magento · PHP · MySQL

이후 Java · Spring · Tomcat · PostgreSQL

@@ Twitter · 2010~2013 @@

이전 Ruby on Rails 단일 코드베이스

이후 JVM 기반 재설계

@@ Stream · 2017 @@

이전 Python

이후 Go

@@ Uber · 2018 @@

이전 Python · Flask · uWSGI · NGINX

이후 Go

쉽고 대충, 빠르게가 아니라정규개발로 만듭니다.

정규개발은 업무와 데이터, 운영 조건을 먼저 정의하고 구조를 설계한 뒤, 검증할 수 있는 단위로 구현해 실제 데이터로 시험하고 운영까지 책임지는 개발입니다.

처음 며칠은 느려 보여도 운영 중에 시스템을 다시 만드는 비용과 시간을 치르지 않습니다. 아래 공개 사례들이 그 차이를 보여 줍니다.

  1. 01

    설계가 먼저입니다

    화면보다 업무 흐름과 데이터, 권한과 동시 처리 구조를 먼저 설계합니다.

  2. 02

    실데이터로 검증합니다

    대량 출력, 마감, 동시 재고 처리, 중복 요청, 장애 복구를 실제 업무 데이터로 시험합니다.

  3. 03

    AI는 도구로 씁니다

    AI를 적극 활용하되 설계와 코드 검토, 보안 검사는 개발자가 책임집니다.

CASE 01 · REBUILD

쉽게 시작해 다시 만든 기업들

초기 구현의 편의성을 우선했다가 운영 과정에서 한계를 겪고 재구축한 공개 사례입니다. 당사자 회고와 공식 기술 문서를 우선했고, 근거 수준이 낮은 사례는 따로 표시했습니다.

  1. 2010독일 패션 커머스

    Zalando

    PHP 상점을 Java·Spring으로 다시 작성

    이전Magento · PHP · MySQL이후Java · Spring · Tomcat · PostgreSQL

    근거 · 당사자 회고

    한계
    초기에는 Magento, PHP, MySQL 기반으로 상점을 운영했지만 처리 규모 확대와 업무 요구 변화에 대응하는 데 한계에 도달했습니다.
    대응
    2010년 여름, 상점을 Java, Spring, Tomcat, PostgreSQL로 다시 작성했습니다.
    함께 볼 점
    당시 근무한 엔지니어가 직접 공개한 회고입니다. 당시 Magento 기반 시스템의 한계 사례이므로 PHP 자체가 기업 시스템에 부적합하다는 뜻으로 일반화하면 안 됩니다.
  2. 2010~2013글로벌 SNS, 현 X

    Twitter

    Rails 단일 코드베이스를 JVM으로 재설계

    이전Ruby on Rails 단일 코드베이스이후JVM 기반 재설계

    근거 · 공식 블로그 글 보도

    한계
    2010년 엔지니어링 검토에서 세계 최대 규모의 Ruby on Rails 설치이자 애플리케이션과 개발 조직이 모두 한 덩어리인 구조가 확인됐습니다. MySQL 저장 구조는 한계에 이르렀고, Ruby의 프로세스 단위 동시성 모델 때문에 서버 자원을 다 쓰지 못했으며, 반복된 최적화가 코드를 더 굳게 만들었습니다.
    대응
    사이트 구조를 다시 설계하고 코드를 JVM으로 다시 작성했습니다.
    결과
    성능이 10배 이상 좋아져 서버 한 대가 초당 1만~2만 건의 요청을 처리했고, 2013년에는 초당 143,199건의 트윗 최고치를 문제없이 처리했습니다.
    함께 볼 점
    세계적 SNS 규모의 사례입니다. Rails는 지금도 대형 서비스에 쓰이므로 프레임워크 자체의 문제로 일반화하면 안 됩니다.
  3. 2017피드·채팅 API 기업

    Stream

    Python 처리 엔진의 핵심을 Go로 전환

    이전Python이후Go

    근거 · 회사 공식 블로그

    한계
    Python으로 피드 처리 엔진을 개발했지만 데이터 변환, 순위 계산, 집계에서 성능 문제가 발생했습니다. 데이터베이스를 최적화해도 애플리케이션 내부 처리 비용이 병목으로 남았습니다.
    대응
    성능이 중요한 부분은 Go로 전환하고, 대시보드와 사이트, 머신러닝에는 Python을 계속 사용했습니다.
    결과
    특정 순위 계산 기능은 Python 구현에 약 3일, 추가 최적화에 약 2주가 들었지만 Go 재구현에는 약 4일이 걸렸습니다. 회사는 Go 코드가 최적화한 Python 코드보다 약 40배 빨랐다고 보고했습니다.
    함께 볼 점
    재구현 당시에는 요구사항을 더 잘 이해하고 있었다는 비교의 한계를 회사가 직접 밝혔습니다.
  4. 2018모빌리티 플랫폼

    Uber

    쉽게 만든 요청 처리 계층을 Go로 재작성

    이전Python · Flask · uWSGI · NGINX이후Go

    근거 · 공식 기술 블로그

    한계
    데이터 저장소(Schemaless)의 요청 처리 계층을 Python, Flask, uWSGI, NGINX로 구성했습니다. 초기에는 설정과 개발이 쉬웠지만, 동시 요청이 늘면서 프로세스를 계속 추가해야 했고 자원 사용량과 지연이 증가했습니다.
    대응
    해당 계층을 Go로 재작성하고 기존 구현과 결과를 비교하면서 단계적으로 전환했습니다. 전체 재작성에는 약 6개월이 걸릴 것으로 예상했고, 전환 중에도 기존 시스템의 기능 변경과 버그 수정을 함께 반영해야 했습니다.
    결과
    전환 뒤 요청 지연 중앙값은 85%, 상위 1% 지연은 70% 줄었고 CPU 사용량은 85% 넘게 줄었습니다.
    함께 볼 점
    Uber 공식 기술 글입니다. 일반 ERP보다 훨씬 큰 서비스의 특정 처리 계층 사례라는 차이가 있습니다.
  5. 2026인테리어 자재 시각화 SaaS

    Material Planner

    Next.js 일체형을 화면과 연산 서버로 분리

    이전Next.js 일체형이후React · Vite + Python · Django API

    근거 · 구축사 자체 설명

    한계
    구축사 회고에 따르면 Next.js 기반 서비스에 무거운 이미지 처리 기능을 추가하면서 화면 처리와 연산 작업이 자원을 경쟁하고 서버리스 실행 제한에 걸리는 문제가 발생했습니다.
    대응
    화면은 React와 Vite로, 서버는 Python과 Django API로 분리하고 백엔드 작업 노드를 독립적으로 확장하는 구조로 변경했습니다.
    함께 볼 점
    구축사의 자체 설명이며 독립적인 성능 검증 자료는 확인되지 않았습니다. 앞의 사례들보다 근거 수준이 낮은 참고 사례입니다.

CASE 02 · AI ONLY

AI만으로 만든 서비스가 놓친 것

AI 도구는 화면과 기능을 빠르게 만들어 줍니다. 그러나 운영 데이터 분리, 접근 권한, 비밀값 관리처럼 처음부터 설계해야 하는 부분을 놓친 서비스에서 실제 사고가 이어졌습니다.

  1. SaaStr × Replit2025.07

    1,200+

    코드 동결 중 AI 에이전트가 지운 경영진 기록

    코드 동결 중 운영 DB를 지운 AI 에이전트

    SaaStr 창업자 Jason Lemkin이 AI 코딩 플랫폼 Replit의 에이전트로 앱을 만들던 중, 운영 변경을 막아 둔 코드 동결 기간에 에이전트가 운영 DB를 지웠습니다. 경영진 1,200여 명과 기업 1,190여 곳의 기록이 사라졌고, 에이전트는 되돌릴 수 없다고 답했지만 데이터는 수동으로 복구됐습니다.

    Replit 대표는 “용납할 수 없는 일”이라며 개발·운영 DB 자동 분리, 롤백 개선, 계획 전용 모드를 도입하겠다고 밝혔습니다.

    운영 데이터 분리와 권한, 복구 절차는 AI가 대신 지켜 주지 않습니다.

  2. Lovable로 만든 앱2025

    170개

    DB 접근 정책 없이 공개된 AI 생성 앱

    접근 정책 없이 배포된 AI 생성 앱

    보안 연구자가 AI 앱 빌더 Lovable로 만든 공개 앱 1,645개를 분석한 결과, 170개 프로젝트의 엔드포인트 303개에서 DB 행 단위 접근 정책이 없거나 부족했습니다. 로그인하지 않은 사람도 표를 읽고 쓸 수 있어 이름, 전화번호, 결제 정보, API 키 같은 데이터가 노출됐습니다.

    CVE-2025-48757(CVSS 9.3, 치명)로 등록됐습니다. 공급사는 앱 데이터 보호가 각 이용자의 책임이라며 이의를 제기했습니다.

    브라우저가 DB를 직접 부르는 구조에서는 접근 정책이 곧 보안입니다.

  3. Moltbook2026.01

    150만

    코드를 직접 쓰지 않은 서비스에서 노출된 API 토큰

    코드를 한 줄도 쓰지 않은 서비스의 DB 전체 공개

    창업자가 “코드를 한 줄도 직접 쓰지 않았다”고 밝힌 AI 에이전트 소셜 서비스에서, 브라우저 코드에 DB 키가 들어 있고 행 단위 접근 정책이 꺼져 있어 누구나 DB 전체를 읽고 쓸 수 있었습니다. API 인증 토큰 150만 개, 이메일 주소 3만 5천 개, 비공개 대화 4,060건이 노출됐습니다.

    제보를 받은 뒤 몇 시간 안에 막았지만 여러 차례 수정이 필요했습니다.

    비밀값 관리와 DB 접근 통제는 기능이 아니라 설계의 문제입니다.

    근거 · 보안 연구 보고출처Wiz Research (2026.02.02)(새 창)

Veracode · 2025.07

45%

AI가 만든 코드의 45%가 보안 검사에서 탈락

100개가 넘는 AI 모델이 만든 코드를 시험한 결과, 표본의 45%가 보안 검사를 통과하지 못하고 OWASP Top 10 취약점을 넣었습니다. Java는 72%였고, 모델의 크기나 학습 수준이 높아져도 보안 성능은 나아지지 않았습니다.

Google DORA · 2025.09

“AI는 팀을 고쳐 주지 않습니다. 이미 있는 것을 키웁니다.”

AI는 팀의 수준을 증폭합니다

약 5,000명을 조사한 2025 DORA 보고서는 강한 팀은 AI로 더 나아지고 어려움을 겪는 팀은 기존 문제가 더 커진다고 밝혔습니다. AI 도입은 배포 처리량과는 함께 늘었지만 배포 안정성과는 여전히 부정적인 관계였습니다.

THE DIFFERENCE

쉽고 빠른 개발과 정규개발은 이렇게 다릅니다

같은 기능을 만들어도 시작점과 검증 기준이 다르면, 규모가 커졌을 때의 결과가 달라집니다.

쉽고 빠른 개발과 소프트모아 정규개발 비교
구분쉽고 빠른 개발소프트모아 정규개발
시작보이는 화면부터 바로 만듭니다.업무 흐름과 데이터, 사용자와 운영 조건을 먼저 정의합니다.
구조한 덩어리로 만들고 문제가 생기면 덧붙입니다.데이터, 권한, 트랜잭션, 동시 처리를 먼저 설계합니다.
AI 활용생성된 코드를 검토 없이 그대로 반영합니다.AI를 쓰되 설계와 코드 검토, 보안 검사는 개발자가 책임집니다.
검증화면에서 동작하면 완료로 봅니다.실제 업무 데이터로 대량 처리, 마감, 동시 처리, 장애 복구를 시험합니다.
운영개발과 운영 데이터가 섞이고 백업은 나중에 챙깁니다.개발과 운영을 분리하고 권한, 백업과 복구 절차를 갖춘 뒤 오픈합니다.
규모가 커지면한계에 부딪혀 다시 만듭니다.구조를 유지한 채 기능을 넓혀 갑니다.

ERP CHECKLIST

ERP를 맡기기 전에 확인할 여덟 가지

이 사례들이 보여 주는 것은 초기 개발의 간편함만으로 운영 적합성을 판단하면 재개발 비용이 발생할 수 있다는 점입니다. Python과 PHP도 정식 백엔드를 구성할 수 있으므로 언어만으로 적합성을 판단해서는 안 됩니다.

중견기업 ERP에서는 실제 업무 데이터를 이용해 대량 출력, 마감, 동시 재고 처리, 중복 요청, 장애 복구를 검증해야 합니다. 특히 무거운 작업이 실행되는 동안에도 일반 조회와 저장이 정상적으로 작동하는지 확인해야 합니다.

  1. 01

    대량 출력

    수천 건의 명세서와 보고서를 출력하는 동안에도 다른 사용자의 조회와 저장이 멈추지 않는가?

  2. 02

    마감

    월·분기 마감을 처리하는 중에 들어온 입력이 마감 결과를 어긋나게 하지 않는가?

  3. 03

    동시 재고 처리

    여러 사람이 같은 품목을 동시에 출고해도 재고가 어긋나거나 음수가 되지 않는가?

  4. 04

    중복 요청

    저장 버튼을 두 번 누르거나 네트워크가 요청을 다시 보내도 한 번만 반영되는가?

  5. 05

    무거운 작업 격리

    집계와 정산 같은 무거운 작업이 도는 동안에도 일반 조회와 저장이 정상인가?

  6. 06

    장애 복구

    백업에서 실제로 복구해 보았고, 복구에 걸리는 시간을 알고 있는가?

  7. 07

    권한

    메뉴를 숨기는 데 그치지 않고 서버와 DB가 권한을 검사하는가?

  8. 08

    개발·운영 분리

    개발과 시험 작업이 운영 데이터에 닿을 수 없는가?

START WITH SOFTMOA

다시 만들지 않을 시스템을 함께 설계합니다.

15년 개발 경력과 국가기관·기업 전산시스템 구축 경험으로, 업무와 데이터, 운영 조건부터 함께 정의합니다.

자료 기준일 2026년 10월 20일. 각 사례는 공개된 원문을 요약했으며, 수치와 표현은 출처의 설명을 따릅니다. 회사명과 서비스명은 각 소유자의 상표입니다.

Have a questions?

견적 및 기술문의

mobile : 010-7931-4813

Contact Form