108
2
부
시스템 설계
면 복잡도가 증가하면서 결국 프로젝트가 교착상태에 빠지게 된다. 이 시점에서 테스트와 릴리
스 자동화를 도입하게 되면 한 번에 너무 많은 작업을 수행해야 하므로 프로젝트 수행 속도가
더 느려진다. 게다가 이미 어느 정도 완성된 시스템에 테스트를 도입하다 보면 원래 의도했던
올바른 동작 대신 현재 버그가 있는 동작을 테스트하는 함정에 빠지게 된다.
이른 시점의 투자는 프로젝트의 규모와 관계없이 유용하다. 조직의 규모가 크면 여러 프로젝트
가 비용을 분담할 수 있고 하나의 프로젝트에 투자하면 결국 나머지 프로젝트도 중앙에서 유지
하는 프레임워크와 워크플로를 사용하므로 그 장점은 더욱 커진다.
지속적 속도를 위해 보안에 초점을 맞춰 설계하기로 했다면 관련된 부류의 취약점을 방어하도
록 구현 당시부터 보안을 염두에 둔 프레임워크와 워크플로를 도입하기를 권한다. 그렇게 하면
개발과 애플리케이션 코드베이스
codebase
의 유지 보수 과정에서 취약점이 발생할 수 있는 가능
성을 현저히, 또는 완전히 제거할 수 있다 (
6
장과
12
장 참고 ). 그렇다고 사전에 상당한 규모의
투자를 진행할 필요는 없다. 오히려 프레임워크의 제약을 고수하기 위한 점진적인 노력이 필요
하며 대부분의 경우 이런 노력은 나중에 드는 비용보다 훨씬 저렴하다. 따라서 의도치 않은 시
스템 장애나 배포 일정에 혼선을 주면서까지 보안에 대처하는 훈련을 수행해야 하는 등의 위험
을 대폭 줄일 수 있다. 또한 릴리스 시점의 보안과 프로덕션 준비 검토도 훨씬 원활하게 ...