1 ) Web 기초
- DNS ( Domain Name System)
- 도메인 이름과 IP 주소를 서로 변환하는 역할을 수행한다.
- 즉, 사람이 읽을 수 있는 도메인 이름을 컴퓨터가 읽을 수 있는 IP 주소로 변환한다.
- DNS가 나오게된 이유
- 컴퓨터 간의 통신을 위해선 IP 주소가 필요하다.
- IP는 변경되는 주소이다.
- DNS 동작 순서
- 원하는 이름과 도메인을 구매한 후, DNS 서버에 등록.
- 도메인 명을 입력하면 DNS 서버는 IP 주소를 반환한다.
- IP가 변경되면 DNS 서버에 등록된 IP 주소만 바뀌면 된다.
- 우리는 IP주소의 형태가 아닌 도메인의 형태로 웹에 접속된다.
- DNS가 나오게된 이유
- URI (Uniform Resource Identifier)
- 인터넷 자원을 나타내는 고유 식별자를 뜻한다.
- Uniform : 자원을 식별하는 통일된 방식을 의미한다.
- Resource : 자원(페이지, 텍스트, 이미지, 동영상, 파일 등)을 의미한다.
- Identifier : 식별자를 의미한다.
- 인터넷 자원을 나타내는 고유 식별자를 뜻한다.
- URI vs URL
- URI - 인터넷 자원을 식별할 수 있는 문자열, Locator, Name 혹은 둘 다 추가 분류될 수 있다.
- URL - 자원의 위치를 의미, 일반적으로 도메인 주소로 알려짐, 프로토콜을 포함.
- URL 방식의 한계
- 자원의 위치를 변경하면 기존 URL은 사용할 수 없다.
- URL 구조
- scheme
- 주로 프로토콜을 사용한다. 웹에서는 http, https, ftp를 주로 사용.
- 참고 : https는 http에 보안(Secure)을 추가한 것.
- user[:password]
- 사용자 정보
- URL은 보안에 취약하여 사용하지 않는다.
- host[:port]
- 리소스의 경로
- 계층 구조로 구성되어있다.
- [?query]
- key = value 형태로 구성된다.
- Query Parameter, Query String 이라고도 한다.
- 두 가지 모두 같은 말입니다. 자주 혼용되는 단어이니 잘 기억해주세요.
- ?로 시작되고 &으로 구분된다.
- [#fragment]
- html 내부 북마크 등에 사용한다.
- 접속받은 URL로 접속 시 특정 위치(fragment)로 이동할 수 있음.
- html 내부 북마크 등에 사용한다.
- scheme
2 ) 용어 모음집
- snake_case
- 문자와 문자 사이를 _ 언더바로 이어준다.
- 모든 단어는 소문자이거나 대문자.
- camelCase
- Java에서는 변수, 함수, 메서드 이름을 만들 때 사용한다.
- 문자와 문자 사이로 대문자로 이어진다.
- PascalCase
- 대부분의 프로그래밍 언어에서 클래스 이름을 지정하는데 파스칼 케이스가 사용된다.
- 문자의 처음 시작을 대문자로 한다.
- 문자와 문자 사이를 대문자로 이어준다.
- kebab-case
- 문자와 문자 사이를 - 대시로 이어준다.
- 모든 단어는 소문자이다.
- Json - 클라이언트와 서버가 통신할 때 사용하는 데이터 양식이다. 클라이언트와 서버가 사용하는 언어에 관계 없이 통일된 데이터를 주고 받을 수 있도록 만든다.
- 요약
- JSON은 사람, 기계, 모두 이해하기 쉬우며 용량이 적다.
- XML을 대체해서 데이터 전송 등에 많이 사용한다.
- 마치 전세계 공통어로 영어를 사용하는 것 처럼 Web의 세계에서는 JSON을 공통어로 사용.
- 클라이언트 to 서버의 통신에 JSON을 사용
- 서버 to 서버의 통신에도 JSON 사용
- 요약
- Scale Up, Scale Out
- Scale Up - 수직적 확장
- 단일 서버의 하드웨어의 사용을 높인다.
- 요청에 대한 처리를 더욱 빠르게 할 수 있도록 만든다.
- Scale Out - 수평적 확장
- 같은 사양의 서버를 여러 대 배치한다.
- 동시에 더 많은 사용자 요청을 처리할 수 있도록 만든다.
- Scale Up - 수직적 확장
- Stateful, Stateless - 클라이언트와 서버 간의 통신 상태 유지 여부에 따라 나뉘는 특성
- Stateful (상태유지)
- 클라이언트 상태를 유지
- 문제점
- 같은 서버가 유지되어야한다.
- 다양한 이유로 동작하지 않을 수 있다.
- 요청 트래픽이 몰리게 되면 상태를 유지하는 것에 Resource가 많이 소모된다.
- Stateless (무상태)
- 클라이언트 상태를 유지하지 않는다.
- 장점
- 같은 서버를 유지할 필요가 없다.
- Scale Out 수평 확장성이 높다.
- 갑자기 요청량이 증가하여도 서버를 증설 하기 쉽다.
- 단점
- 클라이언트가 데이터를 추가적으로 전송해야한다.
- 전송되는 데이터의 양이 많아진다.
- 클라이언트가 데이터를 추가적으로 전송해야한다.
- Stateless 방식의 한계점.
- WebApplication을 만들 때 서버의 확장성을 고려하는 최대한 Stateless하게 만들어야한다.
- 하지만 실제로는 로그인과 같은 상태를 유지해야하는 경우가 발생한다.
- 상태 유지를 최소화 시켜야한다( 추후에 배울 것들을 활용하여 한계 극복)
- Stateful (상태유지)
- Connection 장단점
- 장점 : 새로운 연결 과정을 거치지 않아도 된다, 그만큼 요청에 대한 응답 속도가 빨라진다.
- 단점 : 클라이언트가 지속적으로 요청을 보낼 거라는 보장이 없다
- Connectionless 장단점.
- 장점 : 서버 자원을 효율적으로 사용할 수 있다.
- 단점
- 요청이 추가적으로 오게되면 연결을 새로 해야한다.
- 웹 사이트의 HTML, CSS, JS 이미지등의 정적 자원 모두 다시 다운로드 한다.
- 현재는 HTTP 지속 연결로 문제 해결
'TIL > Spring' 카테고리의 다른 글
TIL 2024-11-05 (Spring 입문 - Spring Annotation, Mapping) (0) | 2024.11.05 |
---|---|
TIL 2024-11-04 (Spring 입문 - MVC) (1) | 2024.11.04 |
TIL 2024-11-01 (Spring 입문 - Web Application) (0) | 2024.11.01 |
TIL 2024-10-31 (Spring 입문 - HTTP) (0) | 2024.10.31 |
TIL 2024-10-29 (Spring 입문 - 1) (0) | 2024.10.29 |