[네트워크] 웹 애플리케이션 (아케텍처, 흐름, 구현)
[웹 애플리케이션 아키텍처]
: 클라이언트-서버 간의 연결에 대한 설명 방법으로 어떻게 애플리케이션 내부의 요소들이 상호간에 소통하는지 설명
: 유저가 웹브라우저에서 요청 시 애플리케이션의 다양한 요소들이 상호작용을 유지할 수 있도록 서로를 결부시키는 뼈대
웹 애플리케이션 특징
: 데스크탑 애플리케이션처럼 상호작용 가능
: 특정 기능을 가지고 있음
: 정보나 자료 등의 콘텐츠 관리 시스템과 함께 작동
>> 동적 페이지를 포함할 경우 웹 애플리케이션(요즘 만들어지는 대부분의 사이트들이 웹 애플리케이션에 속함)
고려사항
1) 신뢰성(reliability)
2) 확장성(scalability)
3) 보안성(security)
4) 견고성(robustness)
[웹 애플리케이션 요청 흐름]
흐름
- 브라우저에 주소 입력
- URL 입력 시 서버 주소 검색을 위해 DNS 서버에 요청
- IP 주소를 찾으면 해당 주소에 HTTPS 요청을 보내고, 방문 기록이 캐시 메모리에 있으면 주소를 캐시에서 가져옴
- 웹 서버에 요청이 도착
- 웹서버 저장소에 요청을 보내 페이지 관련 데이터를 가져오며 해당 저보는 가져오는 중 비즈니스 로직 작용(데이터를 어떻게 다룰 지 정해져 있음)
- 로직을 통해 요청 받은 데이터들이 처리되고 브라우저에 응답 후 화면에 출력
Client-side (유저의 입력에 따라 브라우저에 작동)
: HTML, CSS, JavaScript 언어를 조합해 개발 진행
: 개발 코드는 브라우저에 의해 분석 처리
: 서버와의 소통은 HTTP 요청을 통해 이루어짐
Server-side (HTTL 요청에 따라 서버에서 요청 처리)
: JAVA, Python, JavaScript, C# 등 서버 사이드에서 실행 가능하고, HTTP 요청에 응답할 수 있는 언어 사용
컴포넌트 영역
1) 유저 인터페이스 요소
: 유저 인터페이스와 유저 경험과 관련된 요소
: 화면 출력, 로그, 알림, 시스템 통계, 환경 설정 등 애플리케이션의 기능적 부분 외 요소
2) 구조 요소
: 웹 애플리케이션의 기능적 부분
: 유저와의 상호작용, 제어,DB 등 관련된 요소
: 애플리케이션 전체 구조를 담당하며 웹 브라우저나 클라이언트 / 웹 애플리케이션 서버, DB로 이루어짐
3계층 구조(Web Application Three Tier Architecture)
1) Presentation Layer
: 유저와 브라우저 등을 직접적으로 접촉
: Web Server, 유저 인터페이스 요소 포함
2) Application Layer
: 유저의 요청을 브라우저로부터 받아서 처리
: Application Server가 포함되며, 데이터 접근을 위한 경로를 규격화 하는 과정이 작성
3) Data access Layer
: 애플리케이션의 데이터 저장소에 접근해 데이터를 불러 오거나 저장을 담당
: Application 계층과 밀접한 연관을 가지며, Application 계층의 로직들은 어느 DB에 접근해서 데이터를 회수하고 저장할지를 더 최적화 가능
(추가 구조)
- Cross-cutting : 보안/통신/운영 고나리등을 위한 요소
- Third-party integrations : 제3의 API 서비스를 이용하는 것
[웹 애플리케이션 구현]
1) Single Page Application
: 유저의 입력과 요청에 의한 콘텐츠나 정보의 최신화가 페이지를 새로 불러오지 않고 현재 페이지에서 이루어짐
: 필수적 요소만 요청하여 새로고침 되는 것을 방지해 유저 경험을 극대화함
2) Microservice architecture
: 작고 가벼운 특정한 한가지 기능에 집중한 앱 애플리케이션으로 기능 요소들은 상호간에 의존적으로 설계되지 않음
: 개발 완성 이후 같은 개발 언어를 사용할 필요가 없어 기능 개발에 유연성을 갖고 개발에 대한 전반적 속도와 생산성이 향상
3) Serverless Architectures
: 개발자가 웹 애플리케이션의 서버와 기타 기반 기능들에 의해 외부의 3자인 클라우드 서비스 제공자에게 의탁하는 방식
: 개발자가 기본 서버나 기능들에 걱정할 필요 없이 특정 기능의 개발에 집중할 수 있게 함
구현 기술
HTTP(HyperText Transfer Protocol) : 웹 브라우저상에서 클라이언트와 서버간의 통신을 담당하는 프로토콜로 데이터 요청과 요청에 대한 응답을 반복하면서 애플리케이션을 작동시킴
쿠키(Cookie) : 웹 애플리케이션을 사용하는 유저의 정보를 클라이언트에 보관하고 다음 접속 시 유저의 정보를 클라이언트가 서버로 보내 유저를 서버가 식별하도록 함
세션(Session) : 서버에 Session-Id라는 고유 아이디를 할당해 유저를 식별하여, 단순하고 유출이 되면 안되는 정보는 서버에서 관리를 하며 세션 ID와 매칭해서 저장 및 관리
사용자인증 : 컴퓨터나 특정 시스템을 사용할 때 유저를 식별할 수 있는 ID와 암호값을 지정하여 식별