BFF (Backend for Frontend)
BFF 패턴은 이름 그대로 특정 프론트엔드를 위한 백엔드를 구축하는 패턴을 의미한다. 옛날에는 프론트엔드를 개발할 때 데스크탑 UI 하나만을 개발하면 됐다. 그러나 모바일 시장이 활성화되면서 모바일 전용 UI를 개발하는 것 역시 필요해졌다. 초기에는 하나의 범용 백엔드를 통해서 여러 형태의 인터페이스를 한번에 처리했다. 그러나 모바일 UI와 데스크탑 UI는 성격이 많이 다르기 때문에 각각이 백엔드와 주고받는 request에서 불일치가 종종 발생하게 되었다. 그로 인해 하나의 백엔드가 여러 가지 UI 요구를 처리할 수 있도록 구현하는 과정에서 개발 프로세스의 병목 지점으로 자리잡게 되었다. 만약 하나의 UI에 대해서 백엔드 수정 사항이 필요해도 그것이 전체 UI request에 영향을 끼치지는 않는지 점검하는 작업이 필요했다.
그로 인해 UI별로 그에 최적화된 백엔드를 개발하는 BFF 패턴이 등장하게 되었다. 최적화된 각각의 백엔드는 범용 백엔드보다 크기, 성능, 복잡도 면에서 뛰어난 모습을 보여주며 개발 프로세스 역시 보다 효율적으로 진행할 수 있다. 참고로 공통적인 작업에 대해서도 각각의 백엔드를 구축하지는 않는다. BFF 패턴으로 최적화 백엔드를 구축하는 것은 클라이언트별로 특이성을 가지는 동작에만 해당되며 범용적인 기능 및 로직은 여전히 범용 백엔드로 처리한다. 또한 본 포스트에서는 모바일/데스크탑 환경에 대한 UI 구별을 예시로 들었는데 그 외에 서비스 국가별 BFF 구성 등 다양한 방면으로도 활용할 수 있다.
BFF를 사용해야 하는 경우
- 범용 백엔드 유지로 지나친 오버헤드가 발생할 때
- 특정 UI의 작업을 처리하는 백엔드 로직에 대체 언어를 적용하는 것이 적합할 때
BFF를 사용할 필요가 없는 경우
- 인터페이스가 하나이거나 백엔드와 주고받는 request가 서로 동일하거나 큰 차이가 없는 경우
'아키텍쳐' 카테고리의 다른 글
[아키텍쳐] SAGA 패턴 (0) | 2022.04.11 |
---|