본문 바로가기
Java/자바공부

부트캠프가 끝난뒤...(4)

by 티코딩 2023. 5. 3.

ㅇ 웹 애플리케이션

먼저, 네이티브 애플리케이션을 알아보자. 모바일 환경에서 애플리케이션을 다운로드 받아 사용하는 이런 특정 기기에서 설치해 사용하는 애플리케이션을 네이티브 애플리케이션이라고 한다. 네이티브 애플리케이션은 특정 실행환경에 종속되게 된다.

이런 네이티브 애플리케이션의 장점은, 웹 애플리케이션보다 빠르고 인터넷이 없이 실행가능하고, 안전하다. 단점으로는, 개발비가 더 들고, 빠른 업데이트가 힘들고 앱스토어의 승인을 받아야한다는 단점이 있다.

이제, 웹 애플리케이션은 뭘까? 웹 브라우저를 통해 접근할 수 있는 애플리케이션이다. 정적인 웹사이트가 아니라 동적인 컨텐츠를 제공한다. 장점은, 설치나 다운로드가 필요없고, 업데이트 유지보수가 편리하고 스토어 승인이 필요없다. 단점으로는, 인터넷이 없이는 실행이 안되고 속도가 느리고 보안상 위험에 노출되기 쉽다.

 

ㅇ LAN, WAN

정처기 공부할때 공부했던 부분인데, LAN은 좁은 범위로 연결되어있는 네트워크, WAN은 많은 LAN들이 모여 넓은 범위의 네트워크다. 

 

ㅇ 프로토콜

일종의 규약. 인터넷 통신에 일관되게 네트워크를 사용하게 되는 규약.

 

ㅇ TCP/IP

인터넷의 보급부터 현재까지 표준으로 사용되는 것이 TCP와 IP.

4계층이 존재한다.

4층 - 응용 계층 : 애플리케이션에 맞춰 통신함.

3층 - 전송 계층 : IP와 애플리케이션을 중개해 데이터를 확실히 전달함.

2층 - 인터넷 계층 : 네트워크 주소를 기반으로 데이터를 전송함.

1층 - 네트워크 접근 계층 : 컴퓨터를 물리적으로 네트워크에 연결해서 기기간 전송이 가능하게 한다.

 

ㅇ 주소

IP(Internet Protocol) 주소 - TCP/IP 구조에서 컴퓨터를 실별하기 위해 사용되는 주소다.

4덩이의 숫자로 구분된다. 이런 주소체계를 IPv4라고함. 이게 확장되면서 나온게 IPv6이다.

 

ㅇ 패킷

기기끼리의 통신에는 회선교환방식, 패킷교환방식이 있다.

회선교환방식 - 일대일로 데이터를 교환한다.

패킷교환방식 - 원본 데이터를 패킷이라는 단위로 나눠 여러 회선을 통해 통신을 주고받는다.

하나의 패킷은 헤더와 페이로드로 구성되어 있다. 헤더 - 어떤 데이터의 몇번째 데이터인지의 정보, 보내는 곳, 목적지 정보가 있다.

 

ㅇ 서브넷 마스크

IPv4 주소에서 네트워크부가 어디까진지 나타낸 것.

111111 111111 111111 0000001

0000001 이전까진 네트워크부, 0000001 은 호스트부.

IPv4는 4개의 옥텟으로 이뤄져있고, 0000001 이전까진 각각 1옥텟 2옥텟 3옥텟이다.

 

ㅇ IP프로토콜의 한계

- 비연결성 : 패킷을 받을 대상이 없거나 서비스 불능 상태엔 데이터를 받을 상대의 상태파악이 불가능하기 때문에 패킷을 그대로 전송함.

- 비신뢰성 : 중간에 패킷이 사라지더라도 보내는 기기 측에선 알 수 있는 방법이 없음. 서로 다른 노드를 거쳐 전송되기 때문에 의도한 순서대로 데이터가 도착하지 않을 수 있음.

이런 한계들을 극복하기 위해 TCP와 UDP가 사용된다. 2층 인터넷계층 위 3층 에서 동작을 한다. 2층과 4층을 중개하는 역할을 한다.

TCP는 통신 신뢰성을 높이는 기능이 구현되어있고, UDP는 없는대신 높은 속도와 효율성을 제공함.

HTTP는 모든 데이터를 제대로 송수신이 가능해야 하기 때문에 TCP를 사용함.

 

ㅇ 포트(PORT)

TCP와 UDP 둘다 포트번호를 사용함. 포트번호는 대상 IP 기기의 특정 애플리케이션을 특정하는 번호.

포트 번호는 0~65,535 까지 사용 가능하며, 0~1023까지는 통신규약에 따라 이미 정해져 있음.

ㅇ URL(Uniform Resource Locator)

웹에 게시된 자원을 찾기 위한 브라우저에서 사용되는 메커니즘임. 인터넷상에서 HTML이나 이미지 등 리소스의 위치를 특정하기 위한 서식으로 탄생함. 브라우저의 검색창을 클릭하면 나타나는 주소가 URI임. URI는 URL을 포함하는 상위개념임.

url의 부분설명

ㅇ 도메인

- gTLD - 전세계에서 등록이 가능한 .com, .net, .org, .edu, .gov, .int, .mil 등

- ccTLD - .kr, .us, .jp등 200개 이상이 있음.

 

ㅇ DNS

네트워크 상의 모든 PC는 IP주소가 있음. 모든 IP주소가 도메인 이름을 가지진 않음. 도메인 이름은 대여해 사용한다. 대여한 도메인명과 일치하는 IP주소를 확인하는 서버가 별도로 있다. 이것이 DNS(Domain Name System) 호스트의 도메인 이름을 IP 주소로 변환하거나 반대의 경우를 수행할 수 있도록 만들어진 데이터베이스 시스템.

 

ㅇ 클라이언트 - 서버 아키텍처 (2티어 아키텍처)

웹에서 서비스를 사용하는 쪽(클라이언트) - 서비스를 제공하는 쪽(서버).

서버는 유지보수 시점 외에는 24시간 풀 가동해야함. 사용자와는 직접적으로 연관되어있지 않아 기능에 중점을 두고 개발해야함.

여기에 리소스를 저장하는 공간(데이터베이스)을 별도로 마련한것이 3티어 아키텍처.

 

ㅇ 웹 애플리케이션 아키텍처

웹 애플리케이션 아키텍처는 클라이언트-서버 간 연결에 대한 설명방법. 유저가 웹브라우저에 요청을 하면 애플리케이션의 다양한 요소들이 상호작용을 함. 웹 애플리케이션 아키텍처는 상호작용을 유지하도록 하는 뼈대라고 할수있음.

 

ㅇ 웹 애플리케이션 아키텍처의 요청흐름

naver에 접속한다는 가정하에,

1. 브라우저에 https://naver.com을 입력.

2. 브라우저는 서버의 주소를 찾기 위해 DNS 서버에 요청을 보냄.

3. IP주소를 찾으면 해당 주소에 HTTPS 요청을 보냄. 방문기록이 캐시 메모리에 있으면 주소를 캐시 메모리에서 가져옴.

4. 웹서버에 요청이 도착.

5. 웹 서버는 저장소에 요청을 보내 페이지 관련 데이터들을 가져옴.

6. 정보가져오는 도중 비지니스 로직이 작용.

7. 비지니스 로직은 각 데이터를 어떻게 다루는지 정해져있음.

8. 로직을 통해 요청받은 데이터들이 처리되고 브라우저에 응답함.

9. web page 화면에서 출력됨.

 

모든 애플리케이션은 client-side, server-side로 작동함.

 

ㅇ 웹 애플리케이션의 3단계 계층 구조

- Presentation Layer : 유저와 브라우저 등을 이용해 직접적으로 접촉을 함. 웹서버가 포함됨. 유저 인터페이스 요소들을 포함.

- Application Layer : Business Layer라고도 함. 유저의 요청을 브라우저로부터 받아 처리를 함. 데이터 접근을 위한 경로를 규격화 하는 등의 과정이 포함.

- Data access Layer : 애플리케이션의 데이터 저장소에 접근해 데이터를 불러오거나 저장을 담당함.

 

- Cross-Cutting : 보안, 통신, 운영 관리 등을 위한 요소들.

- 3rd party Integrations : 제 3의 api서비스를 이용하는 것.

 

ㅇ 웹 애플리케이션 구현방식

- Single Page Application : 직관적으로 알기 쉽고 상호작용 가능한 요소들을 이용, 정보의 최신화가 페이지를 새로고침하지 않고 현재 페이지에서 이뤄짐.

- Microservice Architecture : 작고 가벼운 특정한 한가지 기능에 집중한 웹 애플리케이션을 의미함.

- Serverless Architectures : 웹 애플리케이션의 서버와 기타 기능에 대해 외부의 클라우드 서비스 제공자에게 의탁하는 방식.

 

ㅇ SSR, CSR

위에서 말했듯이, 모든 애플리케이션은 client-side, server-side로 작동한다. 둘의 차이는 렌더링 되는 위치다.

SSR은 (Server Side Rendering)의 줄임말. 완제품을 배송 보내는 것과 같다. 서버에서 브라우저로 보내기 전에, 서버에서 렌더링을 해서 보낸다. 

CSR은 (Client Side Rendering) 부품을 나눠 배송해서 모두 도착하면 그때 완성시키는 것과 같다. 웹 페이지에 필요한 내용이 DB에 저장된 데이터인 경우 API가 사용된다. 

 

ㅇ HTTP Messages

여기서부턴 5편에 계속..

'Java > 자바공부' 카테고리의 다른 글

부트캠프가 끝난뒤...(6)  (0) 2023.05.16
부트캠프가 끝난뒤...(5)  (0) 2023.05.11
부트캠프가 끝난뒤...(3)  (0) 2023.04.27
부트캠프가 끝난뒤...(2)  (0) 2023.04.26
부트캠프가 끝난뒤...(1)  (0) 2023.04.11