grep

Engineering

BFF(Backend for Frontend) 가 여기어때에서 하는 일

미카엘Michael(현민우) / ServiceFactoryTeam여기어때

2025년 6월 19일

원문에서 보기 ↗

안녕하세요! 여기어때 BFF개발팀 미카엘입니다. 오늘은 여기어때에서 BFF가 어떤 역할을 하는지, 왜 필요한지, 그리고 실제로 어떻게 활용되고 있는지에 대해 이야기해보려고 해요. 기술적인 개념이지만 최대한 쉽게 풀어볼 테니 편하게 읽어주세요!

BFF(Backend for Frontend)란?

BFF(Backend for Frontend)는 각각의 프론트엔드(Web, iOS, Android 등)에 맞춰진 최적화된 백엔드 계층(Layer)을 의미해요. 말 그대로 “프론트엔드를 위한 백엔드”라는 뜻이죠.

예를 들어, iOS와 Android 앱에서 같은 데이터를 받아야 하지만, 각 클라이언트의 특성이 다르다면 어떻게 해야 할까요? BFF 없이 백엔드에서 직접 데이터를 주면, 프론트엔드에서 불필요한 데이터를 걸러내거나 가공해야 해서 비효율적일 수 있어요. 반면, BFF가 있으면 클라이언트의 특성에 맞춰 데이터 가공을 한 후 전달하므로, 프론트엔드 개발이 훨씬 쉬워지고 성능도 최적화될 수 있는 것이죠.

여기어때에서는 왜 BFF가 필요할까요?

여기어때는 숙박뿐만 아니라 항공권, 레저 티켓, 여행 패키지 등 다양한 서비스를 운영하고 있어요. 게다가 이 서비스는 B2B 웹페이지, B2C 웹페이지, Android 및 iOS 앱 등 다양한 클라이언트를 통해 제공됩니다.

모든 클라이언트가 같은 백엔드를 호출하면 어떻게 될까요?

불필요한 데이터까지 모두 받아야 해서 네트워크 비용 증가하고, 프론트엔드에서 데이터를 변환해야 해서 처리 속도가 저하하고, 새로운 기능 추가할땐 각 클라이언트의 코드 변경 부담이 증가하겠죠.

이런 문제를 해결하기 위해서는 BFF를 활용하면 됩니다!

여기어때에서는 각 클라이언트별 맞춤형 API를 제공하는 BFF 구조를 통해서 성능을 최적화하고 있습니다.

BFF가 여기어때에서 하는 일

1. 클라이언트별 맞춤형 API 제공

각 클라이언트(Web, Android, iOS)는 사용 방식과 요구사항이 다릅니다.

모바일 앱(Android, iOS) 은 네트워크 트래픽을 최소화하고 배터리 사용량을 절감하기 위해 가벼운 데이터를 요청해야 하고 B2B 웹페이지 는 대량의 데이터를 조회하고 분석하는 기능이 필요하고 B2C 웹페이지 는 사용자 경험을 극대화하기 위해 풍부한 데이터를 제공해야 할 수 있지요.

BFF 는 이러한 차이를 반영하여 각 클라이언트에 적합한 데이터 형태로 응답을 줍니다.

덕분에 불필요한 데이터 전송을 줄이고, 최적화된 성능을 제공할 수 있죠.

2. 성능 최적화

여기어때의 서비스에서는 실시간 예약, 빠른 검색, 대량 데이터 조회가 아주 중요한 요소입니다.

특히 모바일 환경에서는 네트워크 비용과 응답 시간이 중요한데, BFF를 통해 이를 최적화할 수 있습니다.

네트워크 트래픽 감소 : 모바일에서는 꼭 필요한 데이터만 전송하여 트래픽 비용을 줄일 수 있습니다.

캐싱 활용 : 자주 요청되는 데이터는 캐싱하여 백엔드 부하를 줄이고 응답 속도를 빠르게 만들어줍니다.

데이터 가공: 프론트엔드에서 데이터를 가공할 필요 없이, BFF에서 필요한 형태로 변환하여 전송합니다.

3. 보안 및 인증 처리

B2B 와 B2C 서비스는 서로 다른 보안 요구 사항을 가지고 있어요.

B2B 고객 은 복잡한 인증 및 권한 관리가 필요할 수 있고 B2C 사용자 는 간편 로그인과 OAuth 같은 인증 방식이 중요할 수 있죠.

BFF를 활용하면 각 클라이언트에 맞는 보안 정책과 인증 방식을 독립적으로 적용할 수 있어요. 덕분에 보안성을 유지하면서도 사용자 경험을 해치지 않는 인증 시스템을 구축할 수 있죠.

4. 독립적인 개발 및 배포

BFF는 각 클라이언트별로 분리되어 개발되므로, 특정 클라이언트에서만 필요한 기능을 독립적으로 추가할 수 있습니다. 때문에 특정 클라이언트에 대한 새로운 기능 추가 및 변경이 용이하고 전체 시스템을 다시 배포할 필요 없이 부분적인 배포가 가능하기때문에 프론트엔드와 백엔드 간의 의존성을 줄여 개발 생산성이 향상되죠.

5. 확장성과 유지보수 용이성

여기어때는 지속적으로 새로운 기능과 서비스를 추가하고 있으며, 앞으로도 다양한 클라이언트가 생길 가능성이 높습니다. BFF를 활용하면 새로운 클라이언트가 추가되더라도 기존 서비스에 영향을 주지 않고 확장할 수 있지요.

여기어때의 BFF 아키텍처

여기어때에서는 BFF를 데이터 가공과 최적화를 수행하는 중요한 계층으로 활용하고 있어요. 주요 특징은 다음과 같습니다.

1. 도메인별 데이터 통합

기존에는 프론트엔드에서 여러 도메인의 데이터를 직접 조합해야 했어요.

BFF는 여러 도메인에서 제공하는 데이터를 하나로 합쳐, 클라이언트가 원하는 형태로 가공하여 제공합니다.

2. 조회 성능 향상을 위한 DB 구성

빠른 응답을 위해 별도의 DB를 활용하기도 합니다.

캐시, 샤딩 등의 기법을 활용하여 빠른 조회 성능을 제공할 수 있습니다.

3. 세션 관리 및 화면 특화 응답

프론트엔드의 세션을 관리하고, 화면에 특화된 응답을 제공합니다.

사용자 경험을 최적화하기 위한 데이터 가공도 수행합니다.

마무리

BFF는 단순한 API 중계 역할이 아니라, 각 클라이언트에 맞춘 최적화된 데이터 제공, 성능 향상, 보안 관리, 확장성 확보 등을 책임지는 중요한 계층(Layer)입니다.

여기어때에서는 다양한 서비스와 클라이언트를 지원하기 위해 BFF를 적극적으로 활용하고 있으며, 이를 통해 더 나은 사용자 경험과 개발 효율성을 제공하고 있습니다. 앞으로도 BFF를 지속적으로 개선하여, 더욱 효율적이고 확장 가능한 서비스를 제공할 예정입니다.

지금까지 여기어때의 BFF에 대해 소개해 드렸습니다. 이 글을 읽으며 BFF에 대해 조금이라도 더 이해하고, 도움이 되었기를 바랍니다. 앞으로도 BFF를 지속적으로 발전시키며 더 나은 사용자 경험을 제공할 예정입니다.

읽어주셔서 감사합니다!