본문 바로가기
카테고리 없음

Backend Introduction (2021-02-23)

by Dev_Dank 2021. 2. 23.

- 웹개발을 배우기 위해 Udemy에서 the-complete-web-developer-zero-to-mastery를 수강한 내용을 정리하는 포스팅입니다. 

- 틀린점이있거나 다른 의견이 있으시다면 언제든지 댓글로 남겨주시면 감사하겠습니다 :)


지금까지 프론트에서 배운 내용 정리

지금까지 배운 웹개발의 흐름을 정리하자면 아래와 같다.

-주소창에 주소를 입력 -> ISP로넘어감 ->DNS로 넘어가서 DNS가 IP주소를 반환해줌 
-받은 IP 주소로 웹사이트 접속 -> 해당 사이트 서버에서 HTML, CSS, JS 를 받아와서 브라우저에서 작동

그리고 유저가 브라우저에 있을때 전체화면을 완전히 로딩하는게아니라 fetch를 통해서 JSON으로 데이터를 업데이트 방식또한 체험해 봤다. 

Backend Basics

옛날에 사용하던 가장 기본적인 서버의 구조는 LAMP STACK (Linux, Apache, MySQL, PHP/Perl/Python)을 이용한 방식이다. 주로 Request와 Response를 주고 받는데 집중이 되어있음. 

확장성이 없고 너무 단순해서 요즘은 Application Server를 쓴다.   

위의 LAMP 는 그냥 Request와 Response를 통해 파일을 주고 받는것에 집중했다면 Node 서버는 서버단에서 로직을 구현할수가 있다. 

예를 들어 아래와 같은 기능이다.

"로그인 request가 들어오면 -> 데이터베이스에서 유저네임을 체크하고 -> JSON으로 response를 frontend쪽에 보내라"

지금까지 배운 JS는 웹브라우저상에서만 구동됬지만 Node.js를 통해서 서버에서도 JS를 사용할 수 있다. 

하지만 사실 위의 도식도 매우 단순한 도식이며 트위터나 페이스북 아마존과 같은 것들은 아래의 그림과 같은 구조로 되어있다. 

사각형 하나가 컴퓨터 하나를 의미한다고 생각하면 된다.

페이스북과 같은 대형서비스는 요청이 많이 들어오기 때문에 서버를 분산하여 지역별로 놔두고 지역별로 각자 다른 서버에 접속하게 한다. 그리고 서버는 결국 똑같은 것이기때문에 Node.js 파일과 Express.js 파일만 복사하여 다른지역의 서버에 붙여넣어주는것인데 이러한 과정을 Scaling이라고 한다. 

또한 데이터베이스는 동일 데이터 베이스를 사용해서 어느 서버던지 간에 동일한 정보에 접속이 가능하다. 

맨위에 있는 Load Balancer는 HTTP request를 듣고 각 서버별로 업무량을 적절하게 나눠주는 역할을 해준다. 

Database로 오는 request 작업량을 완화하기위해서 아래와 같이 여러개의 Database를 지니는 형태도 있다. 

각데이터베이스는 동일 정보를 가지고있다.(추후 강의에서 다룰 예정)

백엔드에서 가장 중요한 것을 한마디로 요약하자면 결국 아래와 같다. 

"HTTP request가 프론트엔드에서 들어왔을떄 정확한 데이터로 response를 보내주는 것"

댓글