ML/MLOps Engineer
Backend for Frontend (BFF) Architecture ๋ฒˆ์—ญ

Backend for Frontend (BFF) Architecture ๋ฅผ ์ฝ๊ณ  ์ •๋ฆฌํ•œ ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด BFF๋Š” ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ๊ฐœ์„ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋งˆ๋‹ค ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ œ๊ณตํ•˜๋„๋ก ๋„์™€์ฃผ๊ณ , ๋‹ค์†Œ ๋ณต์žก์„ฑ์ด ๋Š˜๋”๋ผ๋„ ์„ฑ๋Šฅ์˜ ๊ฐœ์„ ๊ณผ ์œ ์—ฐ์„ฑ์€ ๊ทธ๋งŒํผ์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์„œ๋น„์Šค๋ฅผ ์›น ์•ฑ, ๋ชจ๋ฐ”์ผ ์•ฑ, IoT ๋””๋ฐ”์ด์Šค๋กœ ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•œ๋‹ค๋ฉด BFF ๋ฅผ ๊ณ ๋ คํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

BFF (https://levelup.gitconnected.com/backend-for-frontend-bff-architecture-64fa9f316a5a

 

BFF(Backend for Frontend) ์•„ํ‚คํ…์ฒ˜ ๋“ฑ์žฅ ๋ฐฐ๊ฒฝ

- ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ ์  ๋” ๋ถ„์‚ฐ๋จ

- ๊ฐ ํด๋ผ์ด์–ธํŠธ ์š”๊ตฌ์— ๋งž์ถ˜ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ์ œ๊ณต์ด ํ•„์š”ํ•ด์ง(์œ ์ง€ ๋ณด์ˆ˜์˜ ํŽธ์˜์„ฑ๊ณผ ์•ˆ์ „ํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜ ์ œ๊ณต์„ ์œ„ํ•ด)

 

BFF(Backend for Frontend) ์•„ํ‚คํ…์ฒ˜๋ž€?

๊ฐ ํ”„๋ก ํŠธ์—”๋“œ ์ธํ„ฐํŽ˜์ด์Šค์— ์ „์šฉ ๋ฐฑ์—”๋“œ ๋ ˆ์ด์–ด๋ฅผ ์ œ๊ณตํ•˜๋Š” ์•„ํ‚คํƒ์ฒ˜ ํŒจํ„ด

๊ฐ ํ”„๋ก ํŠธ์—”๋“œ(ex. ๋ชจ๋ฐ”์ผ ์•ฑ, ์›น ์•ฑ, ๋””๋ฐ”์ด์Šค ..) ์„œ๋กœ ๋‹ค๋ฅธ ์„ฑ๋Šฅ, ๋ฐ์ดํ„ฐ, ์ธํ„ฐ๋ž™์…˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ์Œ

=> ํŠน์ • ํ”„๋ก ํŠธ์—”๋“œ์˜ ์š”๊ตฌ์— ๋งž์ถ˜ ๋ฐฑ์—”๋“œ๋ฅผ ์ œ๊ณต

  • ๋‹ค์–‘ํ•œ ์„œ๋น„์Šค ํ˜ธ์ถœ์„ ํ†ตํ•ฉํ•˜๊ฑฐ๋‚˜ ์กฐ์ •
  • ํด๋ผ์ด์–ธํŠธ ์นœํ™”์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ค€๋น„
  • ํ”„๋ก ํŠธ์—”๋“œ์™€ ๊ด€๋ จ๋œ ํŠน์ • ๋กœ์ง ์ฒ˜๋ฆฌ

=> ๊ด€์‹ฌ์‚ฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ณ  ๊ฐ ํด๋ผ์ด์–ธํŠธ์— ์ ํ•ฉํ•˜๊ฒŒ ๋ฐฑ์—”๋“œ๋ฅผ ์ตœ์ ํ™”

 

BFF์˜ ์ž‘๋™ ๋ฐฉ์‹

 

  • ํด๋ผ์ด์–ธํŠธ ์š”์ฒญ: ํด๋ผ์ด์–ธํŠธ(๋ชจ๋ฐ”์ผ, ์›น ๋“ฑ)๋Š” ํ•ด๋‹นํ•˜๋Š” BFF์— ์š”์ฒญ์„ ๋ณด๋ƒ„.
  • BFF ๋ ˆ์ด์–ด: BFF๋Š” ์—ฌ๋Ÿฌ ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜๊ณ , ํ•„์š”ํ•œ ๋ณ€ํ™˜์ด๋‚˜ ์ตœ์ ํ™”๋ฅผ ์ˆ˜ํ–‰ํ•œ ๋’ค, ๋งž์ถคํ˜• ์‘๋‹ต์„ ์ œ๊ณต
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค: BFF๋Š” ํ•˜์œ„ ์„œ๋น„์Šค(์˜ˆ: ์‚ฌ์šฉ์ž ์„œ๋น„์Šค, ์ฃผ๋ฌธ ์„œ๋น„์Šค ๋“ฑ)์™€ ์ƒํ˜ธ์ž‘์šฉํ•ฉ๋‹ˆ๋‹ค.

์ „ํ†ต์ ์ธ ์•„ํ‚คํ…์ฒ˜ vs BFF

Traditional vs BFF (https://levelup.gitconnected.com/backend-for-frontend-bff-architecture-64fa9f316a5a)

์ „ํ†ต์ ์ธ ์•„ํ‚คํ…์ฒ˜

  • ๋‹จ์ผ API ๊ฒŒ์ดํŠธ์›จ์ด๊ฐ€  ์›น, ๋ชจ๋ฐ”์ผ, IoT ๋“ฑ ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ์ฒ˜๋ฆฌ
  • ํด๋ผ์ด์–ธํŠธ๋ณ„ ์š”๊ตฌ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์œ ์—ฐ์„ฑ์€ ๋ถ€์กฑ. ์˜ˆ) ์„œ๋กœ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ ์•ฑ์— ๋งž์ถ˜ ๋ฐ์ดํ„ฐ ๋ชจ๋ธ, ํŠน์ • ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ์œ„ํ•œ ๋ณต์žกํ•œ ์„œ๋น„์Šค ๊ด€๋ฆฌ ๋“ฑ..
  • ๋ฐฑ์—”๋“œ๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ๊ฐ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํ•˜๊ฒŒ ์ œ๊ณต๋ฐ›๋„๋ก ๋ณด์žฅ

BFF๊ฐ€ ํ˜„๋Œ€ ์•„ํ‚คํ…์ณ์—์„œ ์ธ๊ธฐ๋ฅผ ๋„๋Š” ์ด์œ 

 

  • ๋งž์ถคํ˜• ์‚ฌ์šฉ์ž ๊ฒฝํ—˜: ๋ชจ๋ฐ”์ผ ์•ฑ์ด๋“  ๋ฐ์Šคํฌํƒ‘์ด๋“  ์›จ์–ด๋Ÿฌ๋ธ” ๋””๋ฐ”์ด์Šค์ด๋“ , ๊ฐ ํ”„๋ก ํŠธ์—”๋“œ๋Š” ํ•„์š” ์—†๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์ •ํ™•ํžˆ ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋งŒ ๋ฐ›์Œ
  • ๋ณต์žก์„ฑ ๊ฐ์†Œ: BFF๋Š” ๊ฐ ๋ฐฑ์—”๋“œ๋ฅผ ๋งž์ถคํ™”ํ•˜์—ฌ ํ”Œ๋žซํผ ๊ฐ„ ๋งค๋„๋Ÿฌ์šด ๊ฒฝํ—˜์„ ๋ณด์žฅํ•˜๋ฉฐ ์‹œ์Šคํ…œ์„ ๋‹จ์ˆœํ™”
  • ์„ฑ๋Šฅ ํ–ฅ์ƒ: ๋ถˆํ•„์š”ํ•œ API ํ˜ธ์ถœ์„ ์ค„์—ฌ ์‘๋‹ต ์†๋„ ๋ฐ ์‚ฌ์šฉ์ž ๋งŒ์กฑ๋„๋ฅผ ํ–ฅ์ƒ
  • ๋น ๋ฅธ ๊ฐœ๋ฐœ: ํŒ€์ด ๊ฐ ํ”„๋ก ํŠธ์—”๋“œ์— ๋งž๋Š” BFF๋ฅผ ๋”ฐ๋กœ ์ž‘์—…ํ•  ์ˆ˜ ์žˆ์–ด ์„œ๋กœ ๊ฐ„์„ญํ•˜์ง€ ์•Š๊ณ  ๋” ๋น ๋ฅด๊ฒŒ ๊ฐœ๋ฐœ ๊ฐ€๋Šฅ
  • ๊ฐ•ํ™”๋œ ๋ณด์•ˆ: BFF๋Š” ๋ฐฑ์—”๋“œ์™€์˜ ๋ชจ๋“  ์ƒํ˜ธ์ž‘์šฉ์„ ์ œ์–ดํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์—„๊ฒฉํ•œ ๋ณด์•ˆ ์กฐ์น˜๋ฅผ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Œ. ์˜ˆ) ํ† ํฐ ๊ฒ€์ฆ, ์ž…๋ ฅ ๊ฒ€์ฆ, ์†๋„ ์ œํ•œ

 

BFF๋ฅผ ์–ธ์ œ ์‚ฌ์šฉํ•ด์•ผ ํ• ๊นŒ

 

  • ๋‹ค์ค‘ ํ”Œ๋žซํผ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜: ์›น, ๋ชจ๋ฐ”์ผ, ์Šค๋งˆํŠธ ๋””๋ฐ”์ด์Šค ๋“ฑ ๋‹ค์–‘ํ•œ ํ”Œ๋žซํผ์„ ์œ„ํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๊ตฌ์ถ•ํ•˜๋Š” ๊ฒฝ์šฐ, BFF๋Š” ๊ฐ ํ”Œ๋žซํผ์— ๋งž์ถคํ˜• ๊ฒฝํ—˜์„ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ.
  • ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค ์•„ํ‚คํ…์ฒ˜์—์„œ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์—ฌ๋Ÿฌ ์„œ๋น„์Šค(์˜ˆ: ์‚ฌ์šฉ์ž ์„œ๋น„์Šค, ์ฃผ๋ฌธ ์„œ๋น„์Šค, ์žฌ๊ณ  ์„œ๋น„์Šค)๋กœ๋ถ€ํ„ฐ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€์•ผ ํ•  ๋•Œ, BFF๋Š” ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ฉํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ์— ์ผ๊ด€๋œ ์‘๋‹ต ์ œ๊ณต ๊ฐ€๋Šฅ
  • ๋ ˆ๊ฑฐ์‹œ API ์ตœ์ ํ™”: ๋งˆ์ดํฌ๋กœ์„œ๋น„์Šค๋กœ ๋งˆ์ด๊ทธ๋ ˆ์ด์…˜ํ•˜๊ฑฐ๋‚˜ ๋ ˆ๊ฑฐ์‹œ ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ, BFF๋Š” ๋ณต์žกํ•œ ๊ธฐ์กด ์•„ํ‚คํ…์ฒ˜๋ฅผ ๊ฐ์ถ”๊ณ  ํ”„๋ก ํŠธ์—”๋“œ์— ํ˜„๋Œ€์ ์ธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•  ์ˆ˜ ์žˆ์Œ.

๋„์ „๊ณผ ๊ณ ๋ ค ์‚ฌํ•ญ

 

  • ์œ ์ง€ ๊ด€๋ฆฌ ์˜ค๋ฒ„ํ—ค๋“œ ์ฆ๊ฐ€: ๊ฐ ํ”„๋ก ํŠธ์—”๋“œ๋งˆ๋‹ค ๋ณ„๋„์˜ ๋ฐฑ์—”๋“œ๋ฅผ ์œ ์ง€ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋ณต์žก์„ฑ ์ฆ๊ฐ€ํ•  ์ˆ˜ ์žˆ์Œ. ์ถ”๊ฐ€ ๋ชจ๋‹ˆํ„ฐ๋ง, ํ™•์žฅ์„ฑ ๊ด€๋ฆฌ, ๋ณด์•ˆ ์กฐ์น˜๊ฐ€ ํ•„์š”
  • ์ผ๊ด€์„ฑ ๋ฌธ์ œ: ์‹ ์ค‘ํ•˜๊ฒŒ ์„ค๊ณ„ํ•˜์ง€ ์•Š์œผ๋ฉด ํด๋ผ์ด์–ธํŠธ๋งˆ๋‹ค ๋ฐ˜ํ™˜๋˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์ผ๊ด€์„ฑ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ์Œ.
  • ์„ฑ๋Šฅ ๋ณ‘๋ชฉ: BFF ๋ ˆ์ด์–ด๊ฐ€ ์ตœ์ ํ™”๋˜์ง€ ์•Š์œผ๋ฉด ๋งŽ์€ ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•˜๊ฑฐ๋‚˜ ๋ณต์žกํ•œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์„ฑ๋Šฅ ๋ณ‘๋ชฉ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ.

๊ตฌํ˜„ Best Practice

BFF ์•„ํ‚คํ…์ฒ˜ ๊ตฌํ˜„์‹œ ๋‹ค์Œ ๋‚ด์šฉ์„ ๊ณ ๋ คํ•˜์ž

 

  • BFF ๋‚ด ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง ์ œํ•œ: BFF๋Š” ์ฃผ๋กœ ํ”„๋ก ํŠธ์—”๋“œ๋ฅผ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์˜ค์ผ€์ŠคํŠธ๋ ˆ์ด์…˜ ๋ฐ ํฌ๋งทํŒ…์— ์ง‘์ค‘ํ•ด์•ผ ํ•˜๋ฉฐ, ๋ณต์žกํ•œ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ๊ตฌํ˜„ํ•ด์„œ๋Š” ์•ˆ ๋จ.
  • ์บ์‹ฑ ์‚ฌ์šฉ: ํŠนํžˆ ๋ชจ๋ฐ”์ผ ํด๋ผ์ด์–ธํŠธ๋ฅผ ์œ„ํ•ด ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ค๋ ค๋ฉด BFF ๋ ˆ์ด์–ด์—์„œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ์‘๋‹ต์„ ์บ์‹ฑ
  • ์—๋Ÿฌ ์ฒ˜๋ฆฌ: ์—๋Ÿฌ ์ฒ˜๋ฆฌ์™€ ๋กœ๊น…์„ ์ค‘์•™ ์ง‘์ค‘ํ™”ํ•˜์—ฌ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ง๋ฉดํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ๋ฐฉ์ง€
  • ๋ณด์•ˆ: ์ธ์ฆ, ๊ถŒํ•œ ๋ถ€์—ฌ, ์†๋„ ์ œํ•œ ๋“ฑ์„ ํ†ตํ•ด BFF ๋ ˆ๋ฒจ์—์„œ ๋ณด์•ˆ์„ ๊ฐ•ํ™”ํ•˜์—ฌ ๋ฐฑ์—”๋“œ ์„œ๋น„์Šค๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ

์‹ค์ œ BFF ์„ฑ๊ณต ์‚ฌ๋ก€

 

  • ๋„ทํ”Œ๋ฆญ์Šค: BFF ์•„ํ‚คํ…์ฒ˜๋Š” ๋„ทํ”Œ๋ฆญ์Šค์˜ ์›ํ™œํ•œ ํฌ๋กœ์Šค ๋””๋ฐ”์ด์Šค ๊ฒฝํ—˜์„ ์ œ๊ณต. ๋ชจ๋ฐ”์ผ ์•ฑ์€ ๊ฐ€๋ฒผ์šด ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ , ๋ฐ์Šคํฌํƒ‘ ์•ฑ์€ ๋” ํ’๋ถ€ํ•œ ๊ธฐ๋Šฅ์„ ์œ„ํ•ด ๋” ๋งŽ์€ ์ •๋ณด๋ฅผ ๊ฐ€์ ธ์˜จ๋‹ค.
  • ์Šคํฌํ‹ฐํŒŒ์ด: ํœด๋Œ€ํฐ์ด๋“  ํƒœ๋ธ”๋ฆฟ์ด๋“  ์Šค๋งˆํŠธ ์Šคํ”ผ์ปค๋“ , ์Šคํฌํ‹ฐํŒŒ์ด์˜ BFF๋Š” ๊ฐ ๋””๋ฐ”์ด์Šค์— ์ตœ์ ํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ œ๊ณตํ•˜์—ฌ ๋น ๋ฅด๊ณ  ๋งค๋„๋Ÿฌ์šด ์Œ์•… ๊ฒฝํ—˜์„ ๋ณด์žฅ

๊ฒฐ๋ก : BFF๋Š” ์™„๋ฒฝํ•œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณต!

๊ฐœ๋ฐœ์ž๋“ค์ด ๊ฐ ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค์— ํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ •ํ™•ํžˆ ์ œ๊ณตํ•˜๋„๋ก ๋„์™€์คŒ

๋ณต์žก์„ฑ์„ ๋”ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์„ฑ๋Šฅ ๊ฐœ์„ ๊ณผ ์œ ์—ฐ์„ฑ์€ ๊ทธ๋งŒํผ์˜ ๊ฐ€์น˜๊ฐ€ ์žˆ์Œ.

์›น ์•ฑ, ๋ชจ๋ฐ”์ผ ์•ฑ, IoT ๋””๋ฐ”์ด์Šค๋กœ ์„œ๋น„์Šค๋ฅผ ํ™•์žฅํ•œ๋‹ค๋ฉด BFF ๋ฅผ ๊ณ ๋ คํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค.