01. 소개
우리는 이제 리액트에 관한 기본 개념들을 대부분 다뤄보았습니다. 웹 애플리케이션을 만들려면, 보통 리액트 같은 프론트엔드 기술만으로는 필요한 기능들을 구현하기에 부족 할 때가 많습니다. 그 이유는, 데이터를 여러 사람들과 공유하기 위하여, 데이터를 위한 저장공간이 필요하기 때문이죠.
백엔드(Back-end)
데이터를 담기 위하여 우리는, 서버를 만듭니다. 그런데, 서버에 데이터를 무작정 담는것이 아닙니다. 담을때에 있어서, 여러가지 규칙들이 필요하겠지요?
예를들어서, 특정 데이터를 등록 할 때, 사용자의 인증정보가 필요 할 수도 있고, 데이터의 종류로 여러가지인데, 어떻게 구분할지, 그리고 또 등록 할 데이터는 어떻게 검증 할지, 이런것들을 고려해야합니다.
추가적으로, 데이터를 조회 할 때도 마찬가지입니다. 어떤 종류의 데이터를, 몇개씩 보여줄지, 어떻게 보여줄지, 이러한 로직들을 만드는것을, 서버 프로그래밍, 혹은 백엔드 프로그래밍이라고 부릅니다.
백엔드 프로그래밍을 할 때에는, 여러가지 종류의 환경으로 진행 할 수 있습니다. 즉, 언어에 구애받지 않습니다. 백엔드 프로그래밍은, PHP, Python, Golang, Java, JavaScript, Ruby 등 여러가지 언어로 구현 될 수 있습니다. 그 중에서, 우리는 JavaScript 로 서버를 구현 할 수 있게 해주는 Node.js 라는것을 사용해볼 것입니다.
Koa
Node.js 환경에서 웹서버를 구축하기 위해선, 보통 Express, Hapi, Koa 등의 웹프레임워크를 사용합니다. 이 중에서, 우리는 Koa 라는 웹 프레임워크를 사용 할 것입니다. 이 프레임워크는 기존 Node.js 의 Express 프레임워크를 제작했던 사람이 만든 프로젝트 인데요, 이 프로젝트는 Express 를 리팩토링한 결과물이며, 기존 Express 와 아키텍쳐가 많이 바뀌었기에, 버전을 높인 것이 아니라 새 이름의 프로젝트를 만들었다고 합니다.
Koa 와 Express 의 큰 차이점은, Koa 는 훨씬 가볍고, Node v7.6 부터 정식적으로 지원되는 async/await 문법을 아주 편하게 사용 할 수 있다는 점입니다. 때문에, 콜백을 무수하게 사용하게 되는 콜백 지옥을 겪을 일이 없고, 비동기 작업을 편리하게 관리 할 수 있게되죠.
Koa 는, 경량화된 Express 정도로 생각하시면 되겠습니다.
Express 에서 async/await 쓰기도 가능하긴 하지만, 함수를 한번 감싸주어야 합니다. 그 외에는 큰 차이는 없습니다.
Express 를 하던, Koa 를 하던, 하나를 알아두면 나머지 하나도 금방 합니다. 둘다 매우 비슷한 프레임워크니까요.