December 21, 2019
집필 목적
스펙의 설명
웹 서비스의 구체적인 설계 방법
웹은 웹사이트, UI, API등의 분야에서 다양하게 사용된다.
웹을 지탱하는 기술들의 공통점 : 심플함
웹을 특징짓는 두가지 기술적 측면
초기의 인터넷에는 웹이 없었다.
하이퍼미디어의 역사
분산 시스템
웹의 탄생
웹의 성공 요인
흥미로운 점
아키텍쳐 스타일(패턴) : 복수 아키텍처의 공통된 성질, 양식, 규정 혹은 독특한 방식을 가리키는 말. 즉 아키텍처를 설계할 때 설계 지침, 규정, 방식등을 적용하고 결정해주는 나침반과 같은 역할
추상화 레벨 | 웹에서의 예 |
---|---|
아키텍쳐 스타일 | REST |
아키텍쳐 | 브라우저, 서버, 프록시, HTTP, URI, HTML |
구현 | Apache, Firefox, Internet Explorer |
REST 웹 전체의 아키텍쳐 스타일이기도 하며, 개발 웹서비스와 웹 API의 아키텍쳐 스타일이다. 개별 웹 서비스가 전체의 조화를 무너뜨리면 전체가 통일된 아키텍쳐 스타일을 지킬 수 없기 때문에 REST규약을 지키는 것이 중요하다.
리소스 : 웹상의 정보 / 리소스는 URI로 의미있는 이름을 가진다 / URI를 이용하여 리소스 정보에 접근할 수 있다.
REST는 다음과 같은 복수의 아키텍처 스타일을 조합했다.
아키텍처 스타일 | 내용 | 장점 |
---|---|---|
클라이언트/서버 | UI와 처리를 분리 | 클라이언트를 멀티 플랫폼으로 구성할 수 있음(PC, mobile) |
스테이트리스 서버 | 서버가 어플리케이션의 상태를 관리하지 않음 | 서버측의 구현을 간략화 할 수 있음 |
캐시 | 한번 가져온 리소스를 클라이언트쪽에서 돌려씀 | 클라이언트와 서버의 통신량을 줄여 효율적인 처리가 가능 |
유니폼 인터페이스 | 인터페이스의 고정 | 전체적인 아키텍처가 간결해짐 |
계층화 시스템 | 시스템을 계층별로 분리 | |
코드 온 디맨드 | 프로그램을 클라이언트에 다운로드하여 실행 | 클라이언트의 확장 가능 |
URI(Uniform Resource Identifier) : 리소스를 통일적으로 식별하는 ID
http://yohei:pass@blog.example.com:8000/search?q=test&debug=true#n10
종류 | URI 요소 | 정보 |
---|---|---|
URI Scheme | http | URI가 이용하는 프로토콜 |
사용자 정보 | yohei:pass | 리소스 접근시 이용할 사용자이름과 패스워드 |
호스트명 | blog.example.com | 도메인명이나 IP어드레스 |
포트번호 | 8000 | 프로토콜이 사용할 TCP의 포트번호 |
패스 | /search | 호스트 안에서 오로지 하나의 리소스를 가리킴 |
쿼리 파라미터 | q=test&debug=true | 검색 키워드를 전달할 때, 동적 URI를 생성할 때 사용 |
URI 프래그먼트 | #n10 | 리소스 내부의 세세한 부분을 특정 |
URI 종류
URI 종류 | 내용 | 예시 |
---|---|---|
절대 URI | 루트에서부터 전체 경로를 기술 | http://example.com/foo/bar |
상대 URI | URI스키마와 호스트명을 생략하고 경로만 표현 | /foo/bar |
Basw URI | 상대 URI의 기점이 되는 URI | - |
URI에서 사용할 수 있는 문자
ASCII 이외의 문자(한글)를 URI에 넣을 때는 %인코딩 방식 사용
EX) 가 -> %EA%B0%80
주의할 점
좋은 URI(Cool URI)는 변하지 않는 URI이다.
변하지 않는 URI를 만들기 위해서는 다음과 같은 조건들이 있다.
심플한 URI는 사용성이 향상된다. 기억하기 쉽고 일반인들도 사용하기 쉽다는 점이 Cool URI의 장점이다.
운용중인 시스템의 URI를 안이하게 변경해선 안되지만 변경해야 할 때는 가능한 Redirect하도록 하자.
메트릭스 URI
http://example.com/content/press.ko
or press.en