546
2
부
구현
형태의 확장 (예: 수직 확장과 수평 복제 )이 있다. 그러나 특정 시점에서는 다음 단계의 성장을
지원하기 위해 시스템 아키텍처를 변경하려면 상당히 급진적인 조치를 취해야 한다.
8
.
2
.
1
절 ‘격리 실행’에서 다룬 길트의 이야기를 떠올려보자. 단순한 모놀리식 레일즈 애플리케
이션은 길트에서
2
년 동안 잘 작동했다. 비즈니스는 점점 더 성공적이었고, 그에 따라 더 많은
고객과 함께 더 많은 부하를 가져왔다. 특정 티핑 포인트
tipping
point
에 이르러 이 회사는 증가하
는 부하를 처리하기 위해 애플리케이션을 재설계해야 했다.
재설계는 길트의 경우처럼 기존 모놀리스를 분리하는 것을 의미할 수 있으며, 부하를 더 잘 처
리할 수 있는 새로운 데이터 저장소를 선택하는 것이 될 수도 있다. 또한 재설계는 동기식 요청
및 응답에서 이벤트 기반 시스템으로 전환하거나, 새로운 배포 플랫폼을 채택하거나, 전체 기
술 스택을 변경하거나, 아니면 그 사이의 모든 것을 변경하는 일을 의미할 수도 있다.
특정한 확장 임계값에 도달하면 사람들은 처음부터 대규모로 구축해야 한다는 이유로 재설계
가 필요하다고 인식할 위험이 있다. 이는 재앙이 될 수 있다. 새로운 프로젝트를 시작할 때는
무엇을 구축할지 정확히 알지 못하거나 성공할 수 있을지조차 모르는 경우가 많다. 따라서 신
속하게 실험하고 어떤 기능을 구축해야 하는지 파악할 수 있어야 한다. 처음부터 대규모로 구
축하려고 하면 결국 발생하지 않을지도 모를 부하에 대비하기 위해 엄청난 양의