Backend for Frontend. 프론트엔드를 위한 백엔드
이는 프론트엔드를 위해 설계한 백엔드 구조를 의미한다. 이를 알기 위해서는 MSA를 먼저 알아봐야 한다.
MSA(MicroService Architecture)란
MSA는 Microservice Architecture의 약자이다. 독립적인 배포가 가능한 서비스들로 구성된 아키텍처라는 의미를 갖는다.
기존에는 모든 서비스가 한 곳에 모인 Monolithic한 구조로 개발을 진행하는 경우가 많았지만, 서비스의 규모가 커지면 Monolithic한 구조로는 해결이 어려운 문제들에 직면하게 된다.
MSA에서는 각 서비스를 도메인별로 분리시킨다. 서비스는 작은 서비스의 집합으로 구성되며 각 서비스는 독립적이고 단일 비즈니스 기능에 대한 책임만을 가진다. 하나의 서비스에 대해 여러 개의 작은 서비스로 쪼개어 운영하는 것이다.
이를 프론트엔드 관점에서 살펴보자. 프론트엔드의 궁극적인 업무는 화면을 그리는 일이다. MSA 구조에서는 각 서비스가 기능별로 흩어져 있으므로 화면을 완성하기 위해 호출해야 하는 서비스도 늘어나게 된다. 이러면 API에 대한 호출이 한 곳으로 몰리게 되고 서버 트래픽에 문제가 생길 우려도 발생한다.
따라서 화면을 그리기 위해서는 다수의 서비스에 연동을 해야하며, 여러 서비스에 분산되어 있는 데이터를 가져와서 적절히 합쳐야 하는 경우도 발생하게 된다. 이때 BFF가 등장한다.
BFF(BackEnd For FrontEnd)❓
BFF란 BackEnd For FrontEnd의 약자이다. 프론트엔드를 요구사항에 맞게 구현하기 위한 도움을 주는 보조 서버 라고 보면 된다. 기존 서비에서 프론트엔드가 필요한 서비스만을 정리하여 만든 서버이다.
BFF를 사용하면 하나의 API서버에서 호출하여 발생하는 문제를 쉽게 해결할 수 있다. 모바일, 웹 등 종류별로 서버를 두어 필요한 정보만을 호출할 수 있게 만들어 유지관리, 유연성, 보안, 성능 등 다양한 측면에서 이점을 가져와준다.
물론 백엔드는 BFF를 관리하려면 더 힘들겠지만...