[Wecode] Web System Architecture

김택수·2022년 9월 26일
0

1. 1,2,3세대 웹의 차이점을 이해하고 현대 웹 시스템 아키텍쳐에 대해 설명할 수 있다.

Internet?

인터넷이란 여러 통신망을 하나로 연결해 전 세계의 컴퓨터가 서로 연결되어 정보를 교환할 수 있는 하나의 거대한 컴퓨터 통신망이며, 쉽게는 컴퓨터 네트워크를 의미한다.

Internet의 탄생과정

  • 미 국방부가 방공망 시스템을 구축하기 위해 이미 전국에 깔려있는 전화선을 이용한 방식을 통해 처음 인터넷의 저변이 깔릴 수 있었고 (모뎀)
  • 세계 2차대전 종료 후 더 강력한 통신과 시스템 설계의 필요성을 느껴 중앙 집중적 연결방식(전화국)과 비용의 문제점을 해결하기 위해 ARPAnet을 고안해냈다. ARPAnet의 특징은 라우터를 이용한 분배 네트워크가 특징이며, 패킷이라는 것을 적용하여 데이터를 작은 단위로 분할해서 데이터를 보내기 때문에, 데이터가 손상된 경우에도 손상된 부분만 다시 전송하면 되는 시스템을 구축했다.
  • ARPAnet을 거치며 대중들도 Internet을 사용하기 시작했고, 그로 인해 다양한 네트워크가 생겨나며, 하나의 규약으로 묶여질 필요성이 대두되었고, TCP/IP 방식이 인터넷의 기술적 표준으로 자리잡았다. 이후 Internet은 TCP/IP를 통해 묶인 모든 네트워크를 의미하게 됐다. (Internet의 탄생)

웹(Web)의 역사

Web이란 인터넷에 연결된 모든 컴퓨터를 통해 정보를 공유할 수 있는 정보공간이다. 인터넷에서 웹이 발전할 수 있던 이유는 Hypertext, HTML, HTTP의 발전이 있었기 때문이다.

  • Hypertext : 기존 서적은 원하는 정보를 얻기 위해 모든 정보를 훑어봐야 할 필요가 있었는데, Hypertext는 순서나 위치에 상관없이 원하는 정보에 접근할 수 있도록 제공했기 대문에 Web발전에 도움을 줬다.
  • HTML : Hypertext는 HTML로 작성하게 된다.
  • HTTP : 이어서 Hypertext의 연결 규약인 HTTP가 탄생하면서, HTML을 주고 받을 수 있게 됐다.

1세대 웹

단순한 정보 제공위주이며 기능이 많지 않았다. 동적 요소가 없기 때문에 User와의 Interaction은 없었고, 서버에서 HTML 페이지 전체를 클라이언트에 전송하는 단방향 구조

2세대 웹

웹 기반 언어인 Javascript가 출현하면서, User와의 Interaction이 가능해지며 조금 더 동적인 요소를 가미한 웹페이지들이 생겨났다. 서버와 클라이언트가 Javascript를 통해 통신을 주고받으며 양방향 통신이 가능했다.

3세대 웹

SPA(Single Page Application) 방식이 등장하며, 하나의 HTML 페이지를 이용해 웹 전체를 구현하고, Javascript 파일이 HTML 요소 생성부터 모든 페이지의 기능을 동적으로 처리하기 시작했다. 동적인 처리를 위한 Javascript 코드는 최초 통신에서 한 번에 송수신 되며, 그 이후로는 수신된 Javascript 코드를 통해 서버와 실시간으로 통신하며 화면을 동적으로 구현했다.

또한, 앞단에서 해야 할 일들이 많아졌기 때문에 FE가 생겨났고, 자연스럽게 웹 브라우저가 필요한 서버와의 통신은 데이터 전송 및 연산 작업이 많아지면서 BE가 생겨났다.

현대 웹 아키텍쳐

사용자 수데이터의 양이 늘어나며 웹서비스가 복잡해졌고, 더 다양하고 사용자에게 더 나은 사용경험을 제공하기 위한 Interaction이 많아지면서 FE/BE 경계가 더 선명해졌고, 그에 맞춰 BE에서는 API를 여러개를 만들고 데이터 요청을 분산 처리하는 Gateway를 구축(MSA)해 사용자 수에 대응했고, FE에서도 더 다양해진 사용자 디바이스와 요구에 맞춰 FE 서버를 분리하게 됐다.

2. 백엔드 개발자의 역할에 대해서 설명할 수 있다.

백엔드 개발자는 보통 API를 개발하는 개발자를 의미하고, 프론트엔드에서 요청하는 데이터가 정확한 곳으로 안전하게 통신하는지 확인하고 유지보수하는 역할을 담당한다. 백엔드에서도 데이터 및 시스템을 다루는 개발자가 존재하고, 이런것들을 다루는 역할은 조금 더 난이도가 있기 때문에 조금 더 뒷단으로 가려는 노력이 항상 필요하다.

3. 앞으로 개발하게 될 API를 한 문장으로 정의할 수 있다.

앞으로 개발하게 될 API는 웹 시스템에서의 API를 일컫는 단어로, 클라이언트(브라우저)와 데이터베이스라는 두 어플리케이션 사이에서 데이터를 CRUD(Create, Read, Upload, Delete) 하기 위해서 필요한 접점이라고 볼 수 있다. (두 어플리케이션은 서로 통신하지 않고 미리 정해둔 경로의 API에게 통신하여 원하는 데이터를 통신받는다)

4. 인스타그램 웹 API 시스템을 개발한다는 가상의 시나리오를 기반으로 3개월 과정 동안 무엇을 학습하고, 각각의 기술들이 어디에서 사용되는지 설명할 수 있다.

Node.js 기반 HTTP API

  • Node.js
  • RDBMS(MySQL)
  • HTTP(구조 및 메소드, Status Code)
  • Linux & Terminal

더 RESTful 한 API 시스템 구축

  • RESTful API
  • Express.js, TypeORM
  • Layered Pattern
  • 인증, 인가
  • API Documentation

심화과정 및 배포과정

  • Unit Test
  • Docker, AWS
  • CI/CD , Load Balancing
profile
개발자 키우기 Lv1

0개의 댓글