시스템 설계상의 결정은 모두 트레이드오프와 관련된다. 마이크로서비스 아키텍처 역시 결정해야 할 수 많은 트레이드오프를 제공한다.

도움이 되는 것이 바로 구조화, 즉 프레이밍이다. 의사 결정을 프레이밍 할 수 있는 가장 좋은 방법은 성취해야 할 목표에 기반하여 일련의 원칙과 실천 사항을 정의하는 것이다.

1. 전략적 목표


전략적 목표에서는 회사가 어디를 향해 나아가고 있는지, 그리고 그 고객을 행복하게 만들기 위해 어떻게 해야 할지 언급해야 한다. 이는 높은 수준의 목표고, 기술이 전혀 포함되지 않을 가능성이 큰 만큼 회사 또는 사업부서 수준에서 정의할 수 있다.

이때 핵심은 전략적 목표가 조직이 지향하는 바와 일치해야 한다는 것이다. 이는 만약 여러분이 회사의 기술 비전을 규정짓는 사람이라면 여러분 조직의 비기술적인 부분에 더 많은 시간을 할애해야한다는 것을 의미한다.

2. 원칙


원칙은 더 큰 목표를 위해 해야 할 일을 정렬하는 규칙으로, 때로는 변경될 수 있다. 원칙의 수는 10개 미만인 것이 좋다. 이는 사람들이 쉽게 기억할 수 있고 작은 벽보에 붙일 수 있는 개수다. 원칙이 많을 수록 서로 겹치거나 모순될 가능성이 커진다.

바꿀 수 없는 사항을 표시하기 위해 이것은 원칙이고 저것은 제약이라고 공공연히 표명해야 할 수도 있다.

3. 실천사항


실천사항은 원칙을 실행하는 방법으로, 업무 수행을 위한 제사혹도 실질적인 지침이다. 이것은 대게 기술 명세적이며, 어떤 개발자든 이해할 수 있도록 충분히 구체적이어야 한다. 실천사항에는 코딩 지침을 비롯해서 모든 로그 데이터의 중앙 수집이 필요하다거나 HTTP/REST가 표준 통합 스타일이라는 사실 등이 포함된다. 이러한 기술적 특성으로 인해 실천 사항은 원칙보다 더 자주 변경된다. 원칙과 마찬가지로 실천 사항은 때때로 조직의 제약을 반영한다.