제1장. AI 시대의엔터프라이즈 소프트웨어
이 작품은 AI를 사용하여 번역되었습니다. 여러분의 피드백과 의견을 환영합니다: translation-feedback@oreilly.com
여러분은 여러분의 소프트웨어를 직접 본 적이 없습니다. 누구도 본 적이 없습니다. 그 소프트웨어를 설계한 소프트웨어 아키텍트도, 현재 서비스를 관리하는 팀도, 방금 변경을 요청한 담당자도 마찬가지입니다. 이들 각자는 필요할 때마다 새로 조립되고, 필요하지 않을 때는 잊혀지는 코드베이스의 불완전한 모습만을 바탕으로 작업합니다.
무언가를 변경하려고 시도하는 순간 이 사실을 깨닫게 됩니다. 수백 개의 애플리케이션이 먼저 업그레이드해야 할 버전에 고정되어 있어, 일상적인 보안 패치 작업이 지연됩니다. 하나의 모듈만 수정하면 될 리팩토링이 수십 개의 모듈에까지 영향을 미치는데, 그 모듈에 무엇이 의존하고 있는지 기록이 없기 때문입니다. 주말 동안 진행할 예정이었던 프레임워크 교체 작업은, 아무도 문서화하지 않았던 10년 치의 가정들을 드러냅니다. 변경 자체는 거의 어려운 부분이 아닙니다. 어려운 점은, 이미 그 과정에 뛰어들기 전까지는 그 변경이 어떤 부분에 영향을 미치는지 아무도 알 수 없다는 것입니다.
개발자들이 한 번에 하나씩 변경을 가하던 시절에는 이 정도는 감당할 수 있었습니다. 하지만 이제는 에이전트들이 어떤 검토 프로세스도 감당할 수 없을 만큼 방대한 양의 코드를 작성하고 있습니다. 그럼에도 에이전트들은 여전히 개발자들이 늘 해왔던 것처럼 부분적으로만 코드를 읽고, 눈에 보이지 않는 부분은 텍스트를 통해 추론합니다. 여러분은 누구도 검증할 수 없을 만큼 빠른 속도로 전체 시스템에 걸친 변화를 신뢰해야 하는 상황에 놓여 있습니다.
이 책은 마침내 여러분의 소프트웨어를 온전히 파악하기 위해 무엇이 필요한지에 관한 것입니다. 컴파일러 수준의 정확도로 모델을 한 번만 구축하고, 모든 사람(인간과 에이전트)이 동일한 기준점을 바탕으로 작업할 수 있도록 하십시오. 이러한 역량은 그 어느 때보다 중요해졌습니다.
코드베이스에 대한 불가능한 질문들
개발자와 에이전트가 코드를 다루기 위해—읽고, 검색하고, 추론하기 위해—사용하는 모든 것은 코드의 전체가 아닌, 코드의 표현일 뿐입니다. 그리고 이러한 표현들은 하나하나가 본질적으로 불완전합니다:
IDE는 타입, 심볼, 호출 관계 등을 포함하여 개발자의 코드를 해석하지만, 해당 개발자의 컴퓨터에서 열려 있는 프로젝트 범위를 넘어서는 정보는 처리하지 않습니다.
코드의 텍스트 표현은 타입이나 심볼과 같은 실행 가능한 의미를 제거한 것입니다. 저장하고 읽을 수는 있지만, 실행 가능한 정밀도는 부족합니다.
추상 구문 트리는 리포지토리 전반에 걸쳐 유형과 호출 대상을 완전히 해결하지 않은 채 구문을 기술합니다.
의존성 목록은 선언된 내용을 보여줄 뿐, 접근 가능한 항목이나 실제로 사용되는 항목을 드러내지 않습니다.
아키텍처 카탈로그는 시스템을 간접적으로 기술하며, 시스템이 진화함에 따라 어긋나는 근사치를 제공합니다.
오늘날 표현 방식의 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access