6. 백엔드 개발

by 갱그리

이전 챕터에서 '프론트엔드'를 화면 '앞단'에 보이는 것이라고 정의했는데, 그러면 백엔드는 당연히 화면 '뒷단'이다. 이 뒷단에 대해 설명하기 위해, 특정 사이트에 회원 가입을 하겠다고 가정해보자.


일단 회원가입 페이지에 들어가서, 회원가입 양식을 작성한 후 [회원가입하기] 버튼을 클릭한다. 그러면 홈페이지는 어떤 특정한 처리를 한 후에 당신을 사용자로 인증할 것이다. 이것을 그림으로 표현하면 아래와 같다.


backend.png designed by Freepik from Flaticon


프론트엔드 - 즉 회원가입 양식이나 제출하기 버튼 같은 것은 사용자의 눈에 분명 보이지만, 입력 받은 사용자 정보가 어떻게 서버에 저장되는지에 대해서는 보이지 않는다. 백엔드는 웹페이지의 정보를 DB에 넘겨주고, 다시 DB의 정보를 웹페이지로 넘겨주는 중간 다리의 역할을 한다. 단순히 데이터를 전달만 하는 건 아니고, 중간에 가공이 필요한 데이터들은 가공을 해서 DB로 넘겨준다. 예컨대 휴대폰 번호를 '010-1234-1234' 라고 입력했는데, DB에서는 휴대폰 번호를 숫자로만 저장하게 되어있다면, 휴대폰 번호에서 '-' 를 제거하고 '01012341234' 라고 재가공해서 넘겨주는 것이다.


"개발이 필요하다"라고 생각하는 일들의 수행적인 측면은 대부분 백엔드에서 구현된다. 예컨대 강좌 예약 서비스를 만들고 싶다고 하자. 수강생이 강좌를 클릭해서 예약하는 일은 백엔드 관점에서 아래와 같이 세분화된다.


해당 강좌에 현재까지 수강신청한 인원을 조회하여 수강할 자리가 남았는지 확인한다.

자리가 남았으면, 회원 데이터와 강좌 데이터를 DB에 넣는다.

예약 이후 수강 인원이 다 찼으면, 해당 강좌의 상태 정보를 '인원 마감'으로 바꿔준다.


기획자는 단순히 '예약 기능'이라고 이야기하겠지만, 개발자 입장에서 그다지 단순하지 않은 건 이 모든 프로세스를 고민해야 하기 때문이다. 만약 수강 정원이 다 찼는데도 예약을 받는다면, 나중에 회원에게 엄청난 항의를 받을 것이다. 기획자 입장에서는 '당연한 것'이라고 생각될 수 있지만, 개발자 입장에서 이 프로세스는 당연히 되는게 아니라 직접 구현해야 하는 것이 된다.


아주 단순하게 설명했지만 백엔드 개발은 보다 더 복잡하다. 단지 비즈니스 로직을 구현하는 것만 해야 하는 게 아니기 때문이다. 예컨대 로그인한 회원이 어느 페이지로 이동하든 로그인한 상태 그대로 이동할 수 있도록 개발해야 하고, 섣불리 해킹 당하지 않도록 보안에도 신경 써야 한다. 이 모든걸 알아서 척척 하는 개발자라면 좋겠지만, 그렇지 않다면 기획자도 옆에서 함께 챙겨야 한다. 기능은 잘 돌아가지만 보안 요구사항을 충족하지 못한다면, 최악의 경우 앱 스토어에 앱 등록 자체가 거절되기도 한다. 이 다음에서는 보안에 대해 다루어보려 한다.

keyword
매거진의 이전글5. 프론트엔드 개발