Computer Networks
네이티브 애플리케이션 vs 웹 애플리케이션
네이티브 애플리케이션
장점
- 상대적으로 빠르다.
- 기기의 리소스에 접근이 용이하다.
- 인터넷 없이 사용 가능하다.
- 상대적으로 안전하다.
단점
- 개발비가 더 들어간다. (멀티 플랫폼)
- 빠른 업데이트, 배포가 힘들다.
- 앱 스토어에 등록하는 비용이 발생한다.
웹 애플리케이션
장점
- 설치나 다운로드가 필요 없이 브라우저로 실행 가능하다.
- 업데이트 등의 유지관리가 쉽다. (바로 배포 가능)
- 상대적으로 개발이 간편하다.
- 앱 스토어 승인이 필요 없다.
단점
- 인터넷 연결이 필요하다.
- 상대적으로 느리다.
- 앱 스토어의 관리를 받지 않아 사용자 접근성이 떨어진다.
- 상대적으로 보안상 위험에 노출되기 쉽다.
TCP/IP
TCP/IP 4 Layers | OSI 7 Layers | Protocol Examples |
---|---|---|
Application | Application | DNS, HTTP, SSH, TLS/SSL |
Application | Presentation | MIME, ASCII |
Application | Session | Named pipe, RTP |
Transport | Transport | TCP, UDP, QUIC |
Internet | Network | IP |
Link | Data Llnk | ARP, MAC (Ethernet, Wi-Fi) |
- | Physical | Ethernet PHY, Wi-Fi PHY |
- MAC
- ARP
- OSI 2.5 layer, network와 data link 사이
- QUIC - Wikipedia
패킷
IP
IPv4
- IPv4
- 서브넷 전체 주소: 호스트 비트 모두 0
- 브로드캐스트 주소: 호스트 비트 모두 1
- IP address management - Wikipedia
IP의 한계
- 비연결성, 비신뢰성 → TCP, UDP
TCP & UDP
TCP | UDP | |
---|---|---|
서비스 타입 | 연결 지향 | 데이터그램 지향 |
신뢰성 | 목적 기기까지 전송을 보장 | 목적 기기까지 전송이 보장되지 않음 |
순서 보장 | 자체적으로 순서 보장 | 자체적으로 순서 보장되지 않음, 상위 계층에서 순서 관리 필요 |
속도 | 상대적으로 느림 | 상대적으로 빠름 |
- TCP와 UDP 중 비디오 스트리밍 상황에 주로 사용하는 방식
주로 UDP를 사용한다. 데이터를 빠르게 전송하는 것이 중요하고 약간의 손실은 감수할 수 있기 때문이다. - 미 국방부가 TCP/IP가 극심한 전시중 에도 신뢰성을 잃지 않는다고 판단한 이유
RTO, DupAck 기반 재전송 기술로 신뢰성이 확보되어 있다. - DNS 서버가 TCP방식에서 동작하는 경우의 문제점
서버와 클라이언트의 연결이 유지되어야 하는 TCP의 구조상 자원이 더 많이 들 수 밖에 없다.
서버와 클라이언트 간의 더 큰 데이터 교환이 필요한 경우에는 TCP를 사용하기도 한다.
포트
포트와 소켓
• 같은 웹 브라우저를 동시에 두개 켜 놓고 같은 사이트에 접속을 해도 문제 없이 통신이 가능합니다. 이러한 경우. 어떠한 방식으로 원활히 통신이 가능할 수 있을까요?
URL & DNS
URL & URI
![URL](<./HTML & CSS/mdn-url-all.png>
DNS
웹 애플리케이션 아키텍처
Multitier Architecture
1-Tier Architecture
- 메인프레임과 터미널로 이루어진 구조.
- 개인용 컴퓨터 개념이 없던 시절의 구조로, 메인프레임에서 데이터 저장 및 모든 로직을 실행하고 터미널은 유저와 상호작용하는 역할만 한다.
2-Tier Architecture
- 클라이언트와 서버로 이루어진 구조.
- 개인용 컴퓨터의 보급으로 클라이언트 쪽에서도 어느 정도 컴퓨팅이 이루어지게 되면서 생겨났다.
- 클라이언트는 유저 상호작용과 관련된 로직 실행, 서버는 데이터 저장을 하게 된다.
- 구성에 따라 비즈니스 로직을 실행하는 주체는 달라질 수 있으나 2-tier 개념은 주로 클라이언트에서 더 많은 컴퓨팅을 하는 쪽부터 나타났다.
3-Tier Architecture
- 클라이언트, 애플리케이션 서버, 데이터 서버로 이루어진 구조.
- 2-tier 구조에서 비즈니스 로직을 실행하는 애플리케이션 서버를 따로 둔다.
- 클라이언트가 더 가벼워지고 서버가 역할에 따라 단계가 나누어졌다.
MVC vs 3-Tier Architecture
- MVC는 코드 디자인이 model, view, controller 3가지 요소로 나뉘어진 것을 의미하고,
3-tier 구조는 물리적으로 클라이언트, 애플리케이션 서버, 데이터 서버 3단계로 분리되어 네트워크로 연결된 것을 의미한다. - MVC는 클라이언트 혹은 애플리케이션 서버 내부에서 사용될 수 있는 디자인 패턴, 구조인 반면,
3-tier 구조는 좀 더 거시적인 개념, 물리적인 구조다.
References
- Multitier architecture
- Three-Tier Architecture
- Model-view-controller - Wikipedia
- MVC Vs n-tier architecture
계층 외 요소
Cross-Cutting Concerns
- Cross-cutting concern
- 보안, 통신, 운영 관리 등을 위한 요소
- e.g. Spring AOP
- Aspect-oriented programming - Wikipedia
Third-party Integrations
- 제3의 API 서비스와의 결합
- e.g. OAuth 2.0 소셜 로그인 기능, PG사의 결제 기능
웹 애플리케이션 구현
구현 방식
SPA
- Single-page application
- AJAX, Asynchronous JavaScript, XML 등을 사용하여 새로고침 없이 한 페이지에서 작동한다.
MSA (Microservices Architecture)
- Microservices
- 특정 기능을 하는 작은 서비스들을 모아 하나의 웹 애플리케이션을 만든다.
Serverless
- Serverless computing
- 클라우드 서비스에서 서버와 그 기반 기능들을 담당하여 개발자가 서버를 관리할 필요가 없이 필요한 기능을 구현할 수 있다.
구현 기술
SSR과 CSR
CORS (Cross-Origin Resource Sharing)
HTTP
- Hypertext Transfer Protocol
- HTTP | MDN
- HTTP Messages - HTTP | MDN
- HTTP request methods - HTTP | MDN
- HTTP response status codes - HTTP | MDN
Further Reading
- What is the difference between POST and PUT in HTTP?
- Idempotent - MDN Web Docs Glossary: Definitions of Web-related terms | MDN
- MIME types (IANA media types) - HTTP | MDN
- Stateless protocol - Wikipedia
REST
Richardson Maturity Model (RMM)
Open API
Examples
Further Reading
- What is REST - REST API Tutorial
- 5 Basic REST API Design Guidelines
- api.gov.au
- API design guide | Cloud APIs | Google Cloud
- api-guidelines/Guidelines.md at master · microsoft/api-guidelines
- GitHub - OAI/OpenAPI-Specification: The OpenAPI Specification Repository