[Open Source Project] : BFF Pattern

문승현·2022년 7월 31일
0

BeDev_2

목록 보기
8/8
post-thumbnail

오픈 소스 프로젝트를 진행하면서 여러 아키텍쳐 패턴을 학습할 수 있었다.
그 중 가장 기억에 남는 것은 BFF(Backend For Frontend) Pattern이었다.
이는 여러 프론트엔드 애플리케이션 또는 인터페이스에 단일 백엔드 서비스를 지정하지 않으려는 패턴이다.

예를 들어, 애플리케이션이 처음 상호 작용하는 플랫폼이 Web으로 유일하다가
사용자 기반이 늘어남에 따라 Mobile(Android, iOS)로 점차 확장되었다고 가정해보자.
이때, 백엔드 서비스는 Web과 Mobile 인터페이스의 요구 사항을 모두 충족하는 범용 백엔드 서비스가 된다.

그런데 Mobile 인터페이스의 요구 사항은 Web과 다르기 때문에,
백엔드 서비스에서는 이를 충족하기 위해 Web에서는 필요없는 내용까지 구현하게 된다.
다시 말해, 여러 요구 사항 충족을 위해 응답을 조작, 혼합, 일치시키는 상황이 발생하고,
프론트에서도 복잡한 계산이나 비즈니스 로직을 작성해야 하는 경우가 생기는 것이다.

이러한 문제를 해결하기 위해 BFF Pattern이 등장하게 된 것이다.
말 그대로 프론트엔드 인터페이스당 하나의 백엔드 서비스를 만듦으로써,
다른 인터페이스에 영향을 주거나 받는 것 없이 각각의 요구 사항을 충족시키는 것이다.

각 백엔드는 하나의 인터페이스에 고유하므로 해당 인터페이스에 최적화할 수 있다.
이는 결과적으로 모든 인터페이스 요구 사항을 충족하는 범용적인 백엔드보다 더 작고 덜 복잡하며 빠를 것이다.

그런데 BFF를 구현 시 주의해야할 점은 인터페이스가 백엔드에 동일 혹은 유사한 요청을 하거나,
백엔드와 상호 작용하는 데 하나의 인터페이스만 사용되는 경우 BFF가 필요없을 수 있다는 점이다.
따라서 구현에 앞서 서로 다른 인터페이스의 요청 사항을 잘 분석할 필요가 있으며,
BFF 간의 코드 중복이 발생할 가능성이 높기 때문에 인터페이스별 논리와 동작만 포함시키고
일반 비즈니스 로직 및 기타 전역적인 기능은 다른 곳에서 관리할 수 있도록 해야 한다.

참고 자료 1) - Backends for Frontends pattern
참고 자료 2) - Pattern: Backends For Frontends
참고 자료 3) - 카카오페이지는 BFF(Backend For Frontend)를 어떻게 적용했을까?

0개의 댓글