웹 개요 및 웹 개발이 필요한 이유

 

01. 웹 개발 및 웹 개발 필요한 이유

 

 

'웹을 개발하다' = 웹 브라우저, 웹 서버와 관련된 모든 것을 개발하는 것을 통칭


웹을 개발한다는 것을 웹 브라우저, 웹 서버와 관련된 모든 것을 개발하는 것을 통칭한다. 즉, 웹 페이지에 무엇인가를 표기하는 것이다.

이때 프론트엔드는 무엇인가를 표현해주는 역할을 하고, 웹 페이지에 표기 방식인 렌더링을 다룬다. 백엔드는 api를 이용해 동적 데이터를 제공하는 역할을 수행하며, 웹페이지가 표기할 데이터를 조작하는 것이다.

 

  • 웹 페이지 그 자체: HTML + CSS + JS 로 구성
    • HTML(Hyper Text Markup Language): 문서 구조
    • CSS(Cascading Style Sheets): 문서 꾸미기. 형태
    • JS(JavaScript): 유저 인터랙션. 유저 이벤트 처리 및 DOM 조작
  • 웹페이지 내 표기할 데이터: 웹 페이지에 동적으로 표기하 ㄹ데이터, 데이터 조작의 모든 것

 

앱은 앱을 구동하기 위한 머신인 안드로이드나 ios가 필요하다. 반면, 웹은 어디서든 적용이 가능하다. 작은 머신(VM)격인 웹 브라우저 어디든지 설치가 가능하다.

 

 

 

 

02. 웹의 본질: '요청-반환'

#1. 요청-반환 주체 구성

요청-반환 주체는 웹 브라우저&웹서버로 구성된다. 이때 요청-반환에는 크게 2가지 방식이 있다.

 

◼︎ 웹브라우저 - 웹서버 간 요청 반환

프론트엔드 & 백엔드 사이 데이터, 웹페이지 교환하는 것에 해당

 

◼︎ 웹서버 - 웹서버 간 요청 반환

open api를 사용할 경우. MSA 해당

Open API를 이용한 웹서버-웹서버 간 요청 반환
Open API를 사용하는 경우 서버 대 서버 통신이 발생된다.
A서버가 B서버의 Open API를 이용해 데이터를 요청하고 B서버가 이를 응답하는 구조이다.
MSA(MicroService Architecture)?
MSA는 시스템을 여러개의 독립적인 서비스로 나누어 운영하는 아키텍처이다.
예를 들어, 하나의 어플리케이션이 여러 마이크로 서비스로 구성되어 있다고 할 때, 각각의 마이크로 서비스는 독립적인 서버로서 동작하며, 서로 간 요청과 반환이 발생한다. 개별 서비스(서버)들이 서로 통신하여 하나의 큰 애플리케이션을 구성하는 방식이며, 각 서비스는 독립적으로 배포될 수 있고, 서로 API를 통해 데이터를 주고받거나 기능을 호출하게 된다.

 

 

 

#2. 웹서버 개수: Monolithic 단일 vs. MSA 다중

 

◼︎ Monolithic

Monolithic은 단일 웹서버로 다수 서비스를 제공하는 방식이다.(=한사람이 다 하는 것)

 

단점)

한쪽 서비스에 문제가 생기면 모든 서버에 영향을 끼친다.

-> SPOF(Single Point Of Failure) : 단일 이슈가 전체 이슈로 퍼지는 문제 발생

 

 

 

◼︎ MSA

MSA는 다수 웹서버로 각각 개별 서비스를 제공하는 방식이다.

하나의 서비스 문제가 다른 서버 문제로 전파되지 않으며, 서비스마다 서버가 많아지면 수백개가 존재하게 될 수 있다.

SOLID 중 책임 분리 원칙에 해당한다.

 

단점)

서버 수가 많아지는 만큼 비용이 많이든다.

서비스마다 서버가 많아지면 수많은 서버 속 어떤 서버의 어떤 API를 사용할지 정돈 및 버전 관리가 안된다.

API GateWay로 해결 가능

 

API GW는 모든 서버에 대한 모든 API 호출을 중앙화하며 아래와 같은 특징이 있다.

  • Swagger를 통한 버전 관리 : 각 서버마다 어떤 API 제공하는지 관리
  • Consumer-Producer 관리 : 어떤 서버의 API를 어떤 서버가 사용할지 관리

 

+) 객체지향 설계의 5가지 원칙(SOLID)
1. 단일 책임 원칙(SRP) : 객체는 단 하나의 책임만 가져야 한다.
2. 개방-폐쇄 원칙(OCP) : 기존의 코드를 변경하지 않고 기능 추가할 수 있도록 설계해야 한다.
3. 리스코프-치환 원칙(LSP) : 자식 클래스는 최소한 부모 클래스의 기능은 수행할 수 있어야 한다.
4. 인터페이스 분리 원칙(ISP) : 자신이 사용하지 않는 인터페이스와 의존 관계를 맺거나 영향을 받지 않아야 한다.
5. 의존 역전 원칙(DIP) : 의존 관계 성립시 추상성이 높은 클래스와 의존 관계를 맺어야 한다.

 

 

 

 

 


HTTP상에서 요청-반환을 위해 REST API 또는 GraphQL을 사용한다.

이 두 가지의 요청-반환 방법의 차이는 다음 포스팅에서 더 자세히 정리하고자 한다.

반응형