Print
카테고리: [ Cloud Computing & MSA ]
조회수: 82183

BFF(Backends for Frontends) Pattern

 

정의

특정 frontend 애플리케이션 또는 인터페이스에서 사용할 별도의 서비스를 만드는 패턴이다.

 

왜 필요한가?

애플리케이션 초기 개발할 때 데스크톱 Web UI를 대상으로 개발한다고 가정해보자.

사용자가 많아짐에 따라 서비스 확장이 필요하고 모바일 애플리케이션 개발이 필요하다.

이때, 데스크톱 Web UI와 모바일 애플리케이션의 인터페이스 요구 사항을 모두 만족하는 범용 backends 서비스를 구축했다고 가정해보자.

당장은 괜찮지만 모바일 디바이스의 기능은 화면 크기, 성능, 디스플레이 제한 측면에서 브라우저와 크게 다르다는 제약사항이 있다.

즉, 당장은 요구사항을 맞추더라도 계속해서 유지보수를 하는 데에 충돌이 발생할 수 있다. 

 

BFF를 사용하지 않는 경우

주기적 배포, 변화 등이 발생할 때마다 backends 서비스가 개발 프로세스의 병목 지점이 될 수 있다.

모바일, 웹 인터페이스 팀으로 나눠져 있을 때, 각각의 인터페이스 팀은 본인 팀의 역할뿐만 아니라 다른 팀의 영역에도 업데이트 시 문제가 발생하지 않는지 검토해야 한다.

해당 과정에서 다른 팀과의 충돌이 발생할 수도 있으며, 업데이트 과정에 대해 부담감을 느낄 수 있다.

프런트 엔드 패턴에 대한 백 엔드의 상황에 맞는 문제 다이어그램

 

BFF를 사용하는 경우

사용자 인터페이스당 하나의 backends 서비스를 만들게 된다.

각 서비스의 동작과 성능을 미세 조정하여 frontends 환경의 요구사항에 부합할 수 있도록 조정할 수 있다.

무엇보다 다른 frontends 환경에 영향을 줄 염려가 없다.

결과적으로 범용적인 backends 서비스보다 더 작고, 덜 복잡하고, 더 빠른 서비스를 제공할 수 있다.

또한 언어 선택, 릴리즈 일정, 작업 우선 순위, 기능 통합 등 문제에 있어서 유연하게 처리할 수 있다.

프런트 엔드 패턴에 대한 백 엔드의 다이어그램

 

문제 및 고려사항

 

해당 패턴을 사용해야 하는 경우

 

적합하지 않은 경우