웹 개발에서 BFF(Backend for Frontend) 패턴이란 무엇이며, 왜 필요한 걸까요?
이 글에서는 BFF 패턴의 개념, 장점, 그리고 실제 구현 방법까지 자세히 알아보겠습니다.
📌 목차
- BFF(Backend for Frontend)란?
- BFF 패턴이 필요한 이유
- BFF 패턴의 장점과 단점
- BFF 패턴 아키텍처
- BFF 패턴 구현하기
- OAuth 2.0과 함께 사용하는 BFF
- BFF 패턴을 적용할 때 고려해야 할 점
- 결론
1️⃣ BFF(Backend for Frontend)란?
BFF(Backend for Frontend)는 클라이언트(프론트엔드)별로 별도의 백엔드(서버)를 제공하는 아키텍처 패턴입니다.
일반적으로 프론트엔드는 단일 API 서버에 요청하지만, BFF 패턴에서는 각 클라이언트(Web, Mobile, Desktop 등)마다 최적화된 백엔드를 따로 둡니다.
💡 쉽게 말해?
- BFF는 클라이언트와 API 서버 사이에 위치하여 클라이언트에 맞게 데이터를 가공하고, API 요청을 조정하는 역할을 합니다.
📌 예제 구조:
2️⃣ BFF 패턴이 필요한 이유
단순히 클라이언트가 직접 API를 호출하면 되는데, 굳이 BFF를 도입해야 할까요?
다음과 같은 이유로 BFF 패턴이 필요합니다.
🔹 각 클라이언트에 맞는 데이터 가공
- 웹과 모바일에서 필요한 데이터 형식이 다를 수 있습니다.
- BFF가 API 데이터를 클라이언트에 맞게 변환하여 불필요한 데이터를 줄이고 최적화할 수 있습니다.
🔹 보안 강화
- 클라이언트가 직접 API를 호출하면 보안 이슈가 발생할 수 있습니다.
- BFF가 API 호출을 대행하면, 클라이언트가 직접 민감한 정보를 다루지 않아도 됩니다.
🔹 프론트엔드의 변경에 유연하게 대응
- 클라이언트의 UI 변경이 있을 때 BFF에서만 수정하면 되므로 API 서버를 수정할 필요가 줄어듭니다.
🔹 OAuth 2.0 및 인증 처리
- OAuth 2.0 인증을 사용할 때, 클라이언트가 직접 액세스 토큰을 관리하는 것보다 BFF에서 처리하는 것이 더 안전합니다.
3️⃣ BFF 패턴의 장점과 단점
✅ 장점
✔ 클라이언트별로 최적화된 데이터 제공
✔ 보안 강화 (토큰 관리, API 보호)
✔ API 변경에 유연한 대응
✔ 마이크로서비스와의 연결 최적화
❌ 단점
✖ API 서버와 BFF 서버가 분리되므로 관리해야 할 서버가 증가함
✖ BFF가 병목(Bottleneck)이 될 가능성이 있음
✖ 잘못 설계하면 불필요한 중복 로직이 생길 수 있음
4️⃣ BFF 패턴 아키텍처
BFF 패턴은 다음과 같은 구조를 가집니다.
📌 BFF 패턴의 기본 아키텍처
BFF는 API 서버의 데이터를 가공하여 클라이언트에게 적절한 형태로 제공합니다.
5️⃣ BFF 패턴 구현하기
📌 BFF API 예제 (ASP.NET Core Minimal API)
var builder = WebApplication.CreateBuilder(args);
// 🔹 JWT 인증 추가
builder.Services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
.AddJwtBearer(options =>
{
options.Authority = "https://auth.example.com"; // 인증 서버 주소
options.Audience = "bff-api"; // 대상 Audience 설정
});
builder.Services.AddAuthorization();
var app = builder.Build();
app.UseAuthentication();
app.UseAuthorization();
// 🔹 BFF API 엔드포인트
app.MapGet("/api/bff/user", async (HttpContext httpContext) =>
{
var user = httpContext.User;
if (!user.Identity?.IsAuthenticated ?? true)
return Results.Unauthorized();
return Results.Ok(new
{
UserId = user.Claims.FirstOrDefault(c => c.Type == "sub")?.Value
});
}).RequireAuthorization(); // 인증 필요
app.Run();
6️⃣ OAuth 2.0과 함께 사용하는 BFF
BFF 패턴은 OAuth 2.0 및 OpenID Connect와 함께 사용하면 더욱 안전한 인증 시스템을 구축할 수 있습니다.
✅ JWT 기반 인증을 적용하면
- BFF가 유효한 Access Token을 확인한 후, API 서버로 요청을 보냅니다.
- 클라이언트가 직접 API 서버를 호출하지 않으므로 보안성이 향상됩니다.
7️⃣ BFF 패턴을 적용할 때 고려해야 할 점
📌 1. 클라이언트별 BFF를 분리할 것인가?
- Web, Mobile이 다르다면 각각의 BFF를 둘 것인지, 하나의 BFF에서 처리할 것인지 고민해야 합니다.
📌 2. API 요청이 너무 많아지지 않도록 최적화할 것
- BFF가 단순히 API 요청을 중계하는 역할만 한다면, 과부하가 발생할 수 있습니다.
- API 요청을 병렬 처리하거나 캐싱을 고려해야 합니다.
📌 3. 보안 검증을 철저히 할 것
- BFF가 API 호출을 대신하므로, API 키, JWT 검증, OAuth 2.0 인증을 반드시 적용해야 합니다.
8️⃣ 결론
BFF 패턴은 웹과 모바일 등 다양한 클라이언트 환경에서 최적화된 데이터를 제공하고 보안을 강화할 수 있는 강력한 아키텍처 패턴입니다.
하지만 잘못 설계하면 오히려 복잡도가 증가할 수 있으므로, 클라이언트와 API 서버 간의 역할을 명확히 구분하는 것이 중요합니다.
🚀 BFF 패턴을 도입하면?
✅ 클라이언트가 더 가볍고 빠르게 동작
✅ 보안 강화
✅ 유지보수가 용이한 아키텍처 구축 가능
👉 BFF 패턴을 프로젝트에 도입하려면, 각 클라이언트의 요구사항을 분석하고 적절한 데이터 처리 전략을 수립하는 것이 중요합니다! 🚀
'Backend' 카테고리의 다른 글
AZ-900 DUMP #2 (101-200) // 문제 유형-텍스트 (0) | 2025.03.27 |
---|---|
AZ-900 DUMP #1 (1-100) // 문제 유형-텍스트 (0) | 2025.03.25 |
Microsoft YARP: 고성능 리버스 프록시 솔루션 (0) | 2025.03.13 |
AZ-900 (0) | 2025.02.27 |