평범한 이야기들

BBF (Backend-For-Frontend) 패턴 본문

평범한 개발 이야기/ETC

BBF (Backend-For-Frontend) 패턴

songsariya 2023. 11. 18. 10:37
728x90

 BBF(Backend-For-Frontend)는 웹 애플리케이션 개발에서 사용되는 아키텍처 패턴입니다. 이 패턴은 프론트엔드와 백엔드 간의 효율적인 통신과 협업을 위해 사용됩니다.

 

 일반적으로, 웹 애플리케이션은 프론트엔드와 백엔드로 구성됩니다. 프론트엔드는 사용자 인터페이스(UI)를 담당하고, 백엔드는 데이터 처리와 비즈니스 로직을 담당합니다. 이 두 영역은 서로 다른 요구사항과 기술을 가지고 있기 때문에, 각각의 역할에 특화된 코드를 작성하는 것이 중요합니다.

 

 BBF 패턴은 이러한 역할 분리를 위해 프론트엔드와 백엔드 간에 중간 계층을 추가하는 방식으로 동작합니다. 이 중간 계층은 프론트엔드와 백엔드 간의 통신을 관리하고, 필요한 데이터를 처리하여 프론트엔드에게 제공합니다. 이렇게 함으로써 프론트엔드 개발자는 자신이 사용하는 데이터를 더욱 효율적으로 관리하고 활용할 수 있습니다.

MSA(MicroService Architecture)

 MSA는 Microservice Architecture의 약자로 독립적인 배포가 가능한 서비스들로 구성된 아키텍처라는 의미를 갖습니다. 기존에는 모든 서비스가 한 곳에 모인 Monolithic 한 Monolithic 한 구조로 개발을 진행하는 경우가 많았습니다. 하지만 서비스의 규모가 커지면서 Monolithic 한 구조로는 해결이 어려운 문제들에 존재하게 되고 이를 해결하기 위해 MSA로 서비스를 전환하거나 전환을 시도하는 곳이 늘어나고 있습니다.

Monolithic vs MSA

 MSA에서는 각 서비스를 도메인별로 분리시킵니다. 서비스는 작은 서비스의 집합으로 구성되며 각 서비스는 독립적이고 단일 비즈니스 기능에 대한 책임을 가집니다. 이때 프론트엔드에서는 화면을 그리기 위해 각 서버스 기능별로 나누어져 있기 때문에 화면을 완성하기 위해 호출을 여러 번 해야 할 수가 있고 데이터를 합쳐서 가공해야 하는 문제들이 발생할 수 있습니다.

 

BFF(BackEnd For FrontEnd)

 위 문제로 인해 BFF란게 나오게 되었습니다. BFF란 BackEnd For FrontEnd의 약자이며 말 그대로 프론트엔드를 위한 백엔드 서버를 의미합니다. 프론트엔드를 요구사항에 맞게 구현하기 위한 도움을 주는 보조 서버 정도로 정의할 수 있습니다.

얼핏 보면 기능별로 나뉘어 서비스가 잘 분리되어 있어 문제가 될만한 점이 보이지 않을 수 있으나, 실제로 개발을 진행하다 보면 여러 고민들에 봉착하게 됩니다.

 

1. 하나의 화면에 여러 도메인 API를 호출하는 경우
2. 프론트엔드에서 많은 양의 연산을 요구하는 경우

 

BBF를 사용하면 다음과 같은 장점이 있습니다.

- 프론트엔드 개발자의 개발 생산성을 높일 수 있습니다.
- 프론트엔드 개발자의 백엔드 개발에 대한 이해를 높일 수 있습니다.
- 웹 애플리케이션의 유지보수를 쉽게 할 수 있습니다.

 

BBF는 다음과 같은 단점이 있습니다.

- 백엔드 개발의 유연성이 떨어질 수 있습니다.
- 프론트엔드 개발자의 백엔드 개발에 대한 이해가 부족하면 웹 애플리케이션의 성능 또는 보안이 저하될 수 있습니다.

728x90
Comments