WEB APP DEVELOPMENT · AI ENGINEERING

코드를 만드는 시대에서, 시스템과 경험을 설계하는 시대로

AI는 웹·앱 개발의 속도를 바꾸고 있습니다. 그러나 더 빠른 코드 생성이 곧 좋은 제품을 의미하지는 않습니다. 목표를 명확히 정의하고, AI의 실행을 통제하며, 안정적인 소프트웨어와 일관된 브랜드 경험으로 완성하는 엔지니어링 역량이 중요해졌습니다.

Agentic CodingHarness EngineeringProduct & Brand Experience
01 / 전환의 이해

개발의 중심은 '코드를 얼마나 빨리 작성하는가'에서 '무엇을 어떻게 검증할 것인가'로 이동하고 있습니다.

웹 애플리케이션을 개발하려면 여전히 프로그래밍 언어와 프레임워크를 알아야 합니다. 그러나 코딩 보조 도구는 자동완성을 넘어 파일을 수정하고, 터미널을 실행하고, 테스트 결과를 읽는 단계까지 발전했습니다. 개발자가 모든 코드를 직접 입력하지 않아도 되는 작업이 늘어난 것입니다.

그렇다고 AI가 개발자의 판단을 대체한다는 뜻은 아닙니다. AI가 구현을 맡는 범위가 넓어질수록 문제 정의, 시스템 구조, 권한 통제, 테스트, 배포 후 책임을 누가 맡을 것인지 더욱 중요해집니다. 결과물의 품질을 결정하는 것은 생성한 코드의 양이 아니라, 제품이 고객의 문제를 정확하고 안전하게 해결하는지입니다.

AI-ASSISTED

AI 보조 코딩

개발자가 구현을 주도하고 AI가 자동완성·설명·디버깅을 돕습니다.

AGENTIC

에이전틱 코딩

목표를 받은 에이전트가 코드베이스와 도구를 사용해 여러 단계의 작업을 수행합니다.

HARNESS

하네스 엔지니어링

에이전트가 안전하고 반복 가능하게 일하도록 실행 환경·제약·검증 체계를 설계합니다.

세 방식은 서로를 대체하는 엄격한 발전 단계가 아닙니다. 작은 수정에는 보조 코딩이 적합하고, 복잡하거나 장시간 진행되는 작업에는 에이전트와 하네스의 중요성이 커집니다.

02 / 하네스의 원리

AI 하네스는 모델이 '일할 수 있는 조건'을 만드는 실행·제어 시스템입니다.

대형 언어 모델은 코드나 다음 행동을 제안할 수 있지만, 프로젝트 파일을 확인하고 실제 프로그램을 바꾸는 일에는 도구와 권한이 필요합니다. 하네스(Harness)는 모델과 파일·터미널·테스트·작업 기록을 연결하고, 허용된 범위 안에서 실행하도록 관리하는 환경을 뜻합니다.

프롬프트가 무엇을 요청할 것인가에 초점을 맞춘다면, 하네스 엔지니어링은 AI가 올바르게 작업할 수 있는 맥락과 경계를 어떻게 만들 것인가를 다룹니다. 이를 하나의 모델 성능과 혼동해서는 안 됩니다. 같은 모델이라도 접근 가능한 정보, 도구, 테스트 환경과 승인 절차에 따라 실무 결과는 달라질 수 있습니다.

Context & State

필요한 지식·파일·작업 이력·세션 인수인계를 관리합니다.

Tool & Permission

파일·셸·브라우저·외부 API에 대한 접근과 실행 범위를 제한합니다.

Evaluation & Feedback

테스트·리뷰·실행 결과를 관찰하고 실패를 수정 가능한 정보로 남깁니다.

좋은 하네스의 목표는 에이전트에게 더 많은 자유를 주는 것이 아니라, 필요한 자율성과 검증 가능한 제약을 함께 제공하는 것입니다.
03 / 컨텍스트 설계

AI에게 모든 정보를 주는 것보다, 지금 필요한 정보를 정확히 찾게 하는 편이 낫습니다.

에이전트가 기존 프로젝트를 수정할 때 가장 먼저 이해해야 하는 것은 디렉터리 구조, 시스템 책임, 변경 금지 규칙, 테스트 명령, 업무 규칙입니다. 프로젝트 루트의 AGENTS.md 또는 도구별 지침 파일은 이 정보를 찾도록 안내하는 출발점이 될 수 있습니다.

그러나 규칙을 하나의 긴 문서에 모두 복사하면 오래된 정보가 쌓이고 중요한 조건이 묻힐 수 있습니다. 핵심 규칙은 간결하게 유지하고, 세부 설계·기능 명세·데이터 구조는 필요한 순간에 참조하도록 나누는 점진적 정보 제공(Progressive Disclosure)이 유용합니다.

맥락을 과도하게 쌓는 방식

방대한 지침을 한 번에 제공

중복·충돌한 규칙과 오래된 정보 속에서 중요한 제약을 놓치기 쉽습니다.

맥락을 구조화하는 방식

핵심 규칙 + 탐색 가능한 문서

작업에 관련된 명세와 코드를 확인하고 출처·최신 상태를 추적할 수 있습니다.

유용한 프로젝트 문서는 AI만을 위해 존재하지 않습니다. 새로운 개발자가 합류하거나 담당자가 바뀌어도 동일한 맥락을 이해할 수 있도록, 조직의 설계 지식을 유지하는 자산이 됩니다.

04 / 명세와 작업 분할

좋은 질문보다 중요한 것은, 완료 여부를 판단할 수 있는 요구사항입니다.

“고객 관리 기능을 만들어 달라”는 요청만으로는 정상적인 결과를 평가하기 어렵습니다. 누가 어떤 데이터를 볼 수 있는지, 중복 문의가 들어오면 어떻게 처리할지, 오류가 발생하면 무엇을 표시할지까지 결정해야 합니다. AI가 개발을 도와도 이러한 제품·업무 규칙은 사라지지 않습니다.

모호한 요청

“문의 관리 화면을 만들어 줘.”

필드·권한·상태·예외·완료 기준이 정해져 있지 않습니다.

검증 가능한 명세

“담당자만 상태를 변경하고, 변경 이력을 남겨 주세요.”

역할, 허용 동작, 기록 규칙, 오류 조건과 수용 테스트가 확인 가능합니다.

복잡한 작업에서는 먼저 코드베이스를 읽고 변경 파일·영향 범위·검증 방법을 계획한 후 구현하는 방식이 도움이 됩니다. 기능 단위별로 작업을 나누고 Git 브랜치나 Worktree로 변경을 격리할 수 있지만, 모든 변경에 별도 계획서나 Worktree가 필요한 것은 아닙니다. 위험도와 규모에 맞는 절차가 중요합니다.

기능 요구사항

사용자 역할, 데이터 흐름, 상태 전이, 화면·API 동작, 예외 경로

비기능 요구사항

보안, 개인정보, 성능, 접근성, 복구, 로그, 확장성, 운영 기준

05 / 아키텍처

AI가 코드를 빠르게 만들수록 변경의 영향이 예측되는 구조가 중요해집니다.

코드를 생성하는 속도가 빨라지면 기능은 빨리 늘어나지만, 모듈 사이의 숨은 의존성도 빠르게 쌓일 수 있습니다. 인증·고객·결제·콘텐츠처럼 업무의 경계를 구분하고, 서로 어떤 데이터를 공유하는지 명시해야 새로운 기능이 기존 기능을 망가뜨리는 위험을 줄일 수 있습니다.

도메인과 모듈의 경계

역할을 분리하고 변경할 책임과 소유 범위를 명확히 합니다.

API·데이터 계약

입력·출력 형식, 스키마, 권한과 예외 동작을 문서화합니다.

자동화된 구조 규칙

의존성 위반을 정적 분석·구조 테스트·CI로 탐지합니다.

규모에 맞는 설계

작은 서비스라면 모듈화된 모놀리스가 복잡한 분산 시스템보다 적합할 수 있습니다.

클린 아키텍처나 마이크로서비스의 이름 자체가 정답은 아닙니다. 어떤 구조를 선택하든 팀과 AI 에이전트가 변경의 범위와 결과를 이해하고 검사할 수 있는가가 중요한 판단 기준입니다.

06 / 평가와 보안

AI의 결과물을 신뢰할 수 있는지는 테스트뿐 아니라 실제 사용 환경에서도 확인해야 합니다.

코드가 컴파일되고 테스트가 통과해도 잘못된 요구사항을 구현했거나, 테스트에 없는 권한 문제를 놓칠 수 있습니다. 자동 테스트는 필수적인 방어선이지만 유일한 품질 증명 수단은 아닙니다. 코드 리뷰, 통합·회귀 테스트, 보안 점검, 실제 브라우저 검증과 운영 모니터링을 함께 사용해야 합니다.

자동 검증

정적 분석·단위·통합·계약·회귀 테스트로 명확한 오류를 찾습니다.

사용자 관찰

실제 화면·접근성·업무 시나리오·사용성을 확인합니다.

운영 피드백

로그·오류율·성능·사용자 문의를 통해 출시 후 문제를 발견합니다.

에이전트의 권한은 최소한으로 시작해야 합니다

코딩 에이전트는 단순히 답변을 만드는 것이 아니라 파일을 변경하고 명령을 실행할 수 있습니다. 외부 문서나 이슈 내용을 읽는 과정에서 악의적인 지시가 섞일 수도 있으므로, 프롬프트 인젝션·비밀키 노출·권한 남용·의존성 오염을 고려해야 합니다.

최소 권한비밀정보 분리샌드박스·승인변경 이력·롤백

삭제·배포·결제·개인정보 접근처럼 영향이 큰 작업은 승인 경계가 필요합니다. 자동 재시도 역시 무제한으로 반복하기보다 횟수·비용·범위·중단 조건을 두고 관리해야 합니다.

07 / 제품 전략

코드의 완성과 제품의 성공은 다릅니다. 고객이 실제로 얻는 가치에서 출발해야 합니다.

대시보드와 알림, 결제, 회원관리 기능이 정확히 작동하더라도 고객이 제품의 가치를 이해하지 못하거나 사용 과정이 복잡하다면 성공적인 서비스라 보기 어렵습니다. 웹·앱 개발에는 시장과 고객에 대한 이해, 제품 포지셔닝, 핵심 사용자 여정, 가치 제안, 가격·운영 구조가 함께 필요합니다.

AI는 사용자 조사 자료를 정리하고 아이디어를 제안하며 화면과 기능을 빠르게 시제품으로 만들 수 있습니다. 그러나 어떤 문제를 해결할지, 어떤 가설을 검증할지, 무엇을 출시하지 않을지를 판단하는 데에는 사업과 도메인에 대한 깊은 이해가 필요합니다.

08 / Brand-to-Code

브랜드 전략도 구현 가능한 명세가 될 때, 일관된 디지털 경험으로 연결됩니다.

브랜드는 로고와 색상으로만 전달되지 않습니다. 고객이 브랜드를 발견하고, 콘텐츠를 읽고, 제품에 가입하고, 실제로 사용하는 과정 전체에서 인식이 형성됩니다. 그러므로 브랜드 전략과 개발 명세가 분리되면 보기에는 비슷하지만 서로 다른 경험을 제공하는 화면이 만들어질 수 있습니다.

이를 Brand-to-Code Engineering이라는 실무 관점으로 설명할 수 있습니다. 확립된 독립 산업 표준이라기보다 브랜드의 추상적인 목표를 디자인·콘텐츠·인터랙션·기술의 검증 가능한 조건으로 번역하는 방법을 뜻합니다.

  1. 브랜드·비즈니스 전략타깃 고객, 포지셔닝, 가치 제안과 성공 지표를 정의합니다.
  2. 메시징·콘텐츠 전략핵심 메시지, 근거 자료, 페이지 서사와 콘텐츠 위계를 정합니다.
  3. 경험·연출 방향사용자 흐름, 정보구조, 인터랙션과 모션의 목적을 설계합니다.
  4. 디자인·개발 명세디자인 토큰, UI 컴포넌트, 반응형·접근성·성능 기준을 구현합니다.
  5. 측정·지속 개선메시지 이해, CTA, 전환, 사용성과 재방문 데이터를 관찰합니다.

예를 들어 '정교하고 신뢰할 수 있는 기술 기업'이라는 인상을 목표로 한다면 추상적 형용사만 AI에게 전달해서는 부족합니다. 실제 성능 데이터, 제품 사진, 사례의 근거, 타이포그래피 위계, 오류 상태 표현까지 구체화해야 합니다. 스크롤 애니메이션도 정보 이해를 도울 때 의미가 있으며, 사용성을 해치는 연출은 오히려 브랜드 신뢰를 낮출 수 있습니다.

AI가 시각적 결과물을 만들어내는 능력과, 기업의 브랜드 약속을 고객 경험 전체에서 일관되게 구현하는 능력은 구분해야 합니다.
09 / 실무 적용

브랜드 웹사이트와 SaaS 앱을 함께 만든다면, 프로젝트의 지식부터 연결해야 합니다.

산업용 소프트웨어를 제공하는 기업이 고객 확보용 웹사이트와 회원 전용 SaaS를 동시에 구축한다고 가정해 보겠습니다. 두 시스템의 기술 스택이 달라도 고객, 제품 가치, 브랜드 표현, 데이터 정의는 서로 충돌해서는 안 됩니다.

  1. 목표 정의

    대상 고객, 해결 문제, 핵심 기능, 문의·가입·활성화 등 성공 기준을 정합니다.

  2. 공통 지식 자산 구축

    브랜드 메시지, 도메인 용어, 데이터 모델, UI 규칙, API 계약을 정리합니다.

  3. AI 실행 환경 마련

    도구·권한·가이드 문서·테스트 명령·작업 완료 기준을 설정합니다.

  4. 작은 단위로 구현

    화면과 기능을 독립적으로 개발하고 변경 영향을 검사합니다.

  5. 제품과 브랜드를 함께 검증

    기능 오류뿐 아니라 메시지, 디자인 일관성, 모바일·접근성도 확인합니다.

  6. 배포 후 관찰

    마케팅 유입에서 회원가입·실사용·유지까지 데이터를 연결해 개선합니다.

이 사례는 이해를 돕기 위한 가상의 프로젝트입니다. 핵심은 AI에 일을 많이 분배하는 것이 아니라, 모든 작업이 동일한 제품 목표와 검증 기준을 공유하도록 만드는 것입니다.

10 / 생산성의 판단

AI 개발 성과는 코드 생성량보다 전달 속도·품질·실제 고객 가치로 판단해야 합니다.

AI를 도입하면 개발 작업의 일부가 빨라질 수 있지만, 항상 그런 것은 아닙니다. 2025년 DORA 보고서는 AI가 조직의 기존 역량과 문제를 증폭시킬 수 있다고 분석합니다. METR의 개발자 생산성 연구 역시 시점·참가자·실험 설계에 따라 효과 추정이 달라지며, 2026년 후속 실험에는 선택 편향 때문에 결과 해석에 한계가 있음을 밝혔습니다.

따라서 누가 얼마나 많은 코드를 생성했는지가 아니라, 같은 품질 조건에서 작업이 얼마나 빨리 끝났는지, 회귀 오류와 운영 부담이 늘지는 않았는지, 고객의 실제 사용이 개선됐는지를 함께 봐야 합니다.

Delivery요구사항을 충족한 기능을 실제 고객에게 전달하는 시간
Quality결함·재작업·회귀 오류·서비스 안정성
Efficiency검토 시간·AI 사용 비용·유지보수 부담
Experience사용성·접근성·성능·브랜드 일관성
Business문의·가입·활성화·고객 유지·매출 기여
11 / 미래 역량

앞으로의 개발자는 기술적 전문성과 제품 전체를 연결하는 사고를 함께 갖춰야 합니다.

01문제 정의

해결할 가치가 있는 고객·업무 문제를 발견하고 우선순위를 정합니다.

02명세 설계

요구를 역할·상태·예외·수용 기준으로 구체화합니다.

03아키텍처

책임·의존성·데이터 흐름과 유지보수 구조를 설계합니다.

04AI 워크플로

컨텍스트·도구·권한·평가와 작업 인수인계를 관리합니다.

05품질·보안

테스트와 사람의 판단을 결합해 실제 위험을 통제합니다.

06UX·브랜드

기능을 이해하기 쉬운 경험과 신뢰할 만한 메시지로 연결합니다.

07데이터 기반 개선

배포 후 사용자의 행동을 관찰하고 가설을 검증합니다.

한 사람이 모든 분야에서 최고 전문가가 될 필요는 없습니다. 각 분야의 관계를 이해하고, 전문 인력과 AI 에이전트가 동일한 제품 목표와 품질 기준 아래 협업하도록 조율할 수 있는 능력이 중요합니다.

12 / 결론

AI 시대의 웹·앱 엔지니어링은 더 많은 코드가 아니라 더 나은 시스템을 설계하는 일입니다.

AI가 수행할 수 있는 개발 작업은 늘어나고 있습니다. 하지만 제품의 목적을 정의하고, 시스템의 품질을 검증하며, 고객의 문제를 해결하는 책임까지 자동으로 사라지는 것은 아닙니다.

좋은 소프트웨어는 정상 동작하는 프로그램을 넘어 기업의 가치 제안을 전달하고, 사용자가 신뢰하며, 지속적으로 운영·개선할 수 있는 제품이어야 합니다. 기술 구현과 제품 전략, 브랜드 경험, 데이터 분석이 서로 연결되어야 하는 이유입니다.

우리가 물어야 할 것은 “AI가 얼마나 많은 코드를 작성하는가?”가 아니라 “AI를 활용해 얼마나 더 명확한 목적과 신뢰할 수 있는 시스템, 더 나은 고객 경험을 만들 수 있는가?”입니다.
구현을 넘어, 실제 비즈니스에 도움이 되는 서비스를 설계합니다.

제품의 목표와 운영 환경에 맞는 기능·데이터·브랜드 경험을 함께 검토합니다.

문의 하기