실제 프로젝트를 진행하다 보면 "이 로직은 프론트엔드에서 처리해야 할까, 백엔드에서 처리해야 할까?" 하는 고민에 빠지곤 합니다.
오늘은 실제 사례를 통해 이러한 결정을 어떻게 내릴 수 있는지 알아보겠습니다.
// 프론트엔드에서 체크하는 방식
const MatchItem = ({ match, currentUser }) => {
const isCreator = match.creatorId === currentUser.id;
return (
<Button
disabled={isCreator}
onClick={handleParticipate}
>
참여하기
</Button>
);
};
보안 취약성
일관성 부족
유지보수 어려움
// 백엔드 API 응답
{
"matchId": "123",
"title": "매치 제목",
"location": "서울시 강남구",
"isCreator": true, // 또는
"canParticipate": false
}
// 프론트엔드 구현
const MatchItem = ({ match }) => {
return (
<Button
disabled={!match.canParticipate}
onClick={handleParticipate}
>
참여하기
</Button>
);
};
보안성 향상
일관성 유지
유지보수 용이
비즈니스 로직의 위치를 결정하는 것은 단순히 기술적인 문제가 아닌, 보안, 유지보수, 일관성 등 다양한 측면을 고려해야 하는 아키텍처 결정입니다. 이러한 결정을 내릴 때는 항상 장기적인 관점에서 프로젝트의 확장성과 유지보수성을 고려해야 합니다.