어려운 것은 인프라에 대한 불필요하거나 외부적인 요소를 추상화하면서도, 인프라가 제공하는 유용한 기능을 활용하는 것이다. 예를 들어 포스트그레스(PostgreSQL) 같은 관계형 데이터베이스를 사용하는 경우, 도메인 코드에서는 데이터베이스의 존재를 숨기되 생산성이나 성능을 향상시키는 고유한 기능은 사용할 수 있어야 한다.
Note ≡ 왜 인프라라고 부르는가?
나는 인프라라는 용어를 웹 서비스, 데이터베이스, 서드파티 API 등 시스템 경계 밖에 있는 외부 시스템과 리소스에 대한 모든 의존성을 가리키는 의미로 사용한다. 이러한 의존성이 있을 때마다 시스템을 외부 시스템이나 리소스와 연결하는 코드를 작성해야 한다. 이런 ‘접착제 코드’를 유연하게 작성하면서 디자인을 해치지 않도록 하는 방법을 6장에서 중점적으로 다룰 것이다.