[BFF] BFF란? express로도 가능한거야?
·
Dev/Backend
발단: 레거시에 있던 Express 서버를 보고, 이미 서버가 있는데 왜 필요하지?레거시 프로젝트(Express 풀스택)와 새로운 모노레포 프로젝트를 동시에 보고 있는데, 문득 이상한 점을 발견했다.모노레포에서는 BFF라는 서버를 사용해 프록시 및 토큰을 사용하는데, 레거시 프로젝트에도 Express를 쓰고 있던걸 발견했다.이미 서버가 있는데 express? 설마 예전 레거시에서 express도 bff의 역할을 한건가? 근데 프록시를 한다면 프록시 서버도 있던걸로 아는데, 프록시 서버에서 토큰은 관리 못할라나..레거시에서도 bff를 도입할 수 있었던가..?여기서부터 꼬리에 꼬리를 물고 파보기 시작했다. 프록시 서버, BFF — 비슷한데 뭐가 다를까?처음엔 "둘 다 중간에서 요청 전달해주는 거 아냐?" ..
[BFF/모노레포] 모노레포 환경에서의 BFF 구조와 pnpm
·
Dev/Backend
BFF (Backend For Frontend) 란?프론트엔드를 위한 전용 백엔드 서버다.일반적으로 프론트엔드는 백엔드 API를 직접 호출하지만, 프로젝트가 커지면 몇 가지 문제가 생긴다.하나의 화면을 그리기 위해 API를 3~4개씩 호출해야 한다백엔드 응답에 프론트가 쓰지 않는 필드가 잔뜩 들어있다CORS, 인증 토큰 처리를 프론트에서 직접 해야 한다 BFF는 이 사이에 끼어서 프론트가 편하게 쓸 수 있는 API를 만들어주는 중간 서버다.# 일반 구조브라우저 → 백엔드 API# BFF 구조브라우저 → BFF 서버 → 백엔드 API BFF가 하는 일역할설명API 조합여러 백엔드 API를 호출해서 하나로 합쳐 내려줌데이터 가공프론트에 필요한 필드만 골라서 응답프록시CORS 우회, 인증 헤더 자동 부착인증..
EJS 템플릿 엔진이란?
·
Dev/Backend
1. 템플릿 엔진이란?HTML에 동적 데이터를 삽입하는 도구. 서버에서 HTML을 받아 HTML로 렌더링데이터 + 템플릿 = HTML 그런데 여기서 의문점이 하나 생긴다.서버에서 HTML을 받아 HTML로 또 렌더링을 해?HTML + HTML = ? 서버에서 내려준다는데 그대로 보여주면 되는 것 아니냐,, 템플릿 엔진의 핵심은 바로 동적 데이터에 있다.정적 HTML이라면 서버가 파일을 내려주는 그대로 보여줄 수 있지만, 예를 들어 내부의 변수가 렌더링 할 때마다 달라진다면?고유의 값이 아닌 유동적인 값, 실제 값으로 채우기 위한 과정이라고 할 수 있겠다.결론 : 서버에서 HTML 배송 -> 프론트가 데이터랑 합쳐서 렌더링!이라고 생각하면 될 듯 하다. 2. EJS란?: JS 문법을 그대로 사용하는 템..