BFF

장숭혁·2024년 9월 28일
0

TIL작성

목록 보기
60/60

MSA 환경에서 여러 플랫폼(안드로이드, IOS, 웹 ...)을 지원하기 위해 각각의 특정 데이터가 필요한 상황이 발생되고 원하는 데이터 형태를 만들어내기 위해 여러 API를 호출하고 혼합하는 과정이 생길 수 있고 이런 상황들 때문에 프론트엔드에서 복잡한 계산 혹은 비스니스 로직을 작성할 수 있다. 이는 UI 스레드에서 비즈니스 로직과 렌더링이 경합을 하게 만들 수 있어 서비스가 느려지게 만들 수 있다.

각각의 플랫폼에 맞지 않는 데이터가 응답될 가능성이 많다. 각각의 플랫폼에 맞지 않는 데이터가 온다면
네트워크 자원낭비가 되거나 서버 부하 증가, 클라이언트 성능 저하 , 사용자 경험 악화 등이 발생된다.

해결책 : BFF 구조

  • Backend For Frontend

API를 각 플랫폼마다 분리하고 맞춤형으로 제공하여 문제를 해결하고자 한다. 프론트엔드를 위한 중간 서버를 구현한다. 여러 플랫폼 구현 환경에서 의미가 있다.

  1. 여러 벡엔드 서비스에서 필요한 데이터를 모아 하나의 API로 제공할 수 있다. 이렇게 하면 프론트엔드에서는 여러 API를 따로 호출할 필요가 없어진다. 예를들어 , 사용자 정보와 상품 정보를 각각 다른 API에서 받아오는 대신 BEF가 두 데이터를 통합 하나의 응답으로 제공한다.

  2. 프론트엔드와 백엔드를 분리한다. 각각 BEF를 이용하여 독립적으로 개발 배포될 수 있다. 프론트엔드 개발자는 BEF를 통해 필요한 데이터를 쉽게 가져오므로 백엔드 변화에 크게 영향을 받지 않는다.

  3. 이상적으로는 프론트엔드 개발자가 개발해야 한다. 프론트엔드의 필요한 스펙을 가장 잘 이해하고 있기 때문

  4. CORS 문제를 해결할 수 있다. BEF 환경에서는 프론트엔드와 BEF 서버가 동일한 출처에 속하므로 CORS문제가 발생하지 않고 BEF는 다른 백엔드 서비스에 요청을 보내는 구조이므로 CORS 제약 문제를 피할 수 있다.

profile
코딩 기록

0개의 댓글

관련 채용 정보