day28_웹 애플리케이션 작동 원리

초록꼬마·2022년 9월 30일
0

bootcamp_Learning

목록 보기
29/35

📗 오늘의 학습 topics

  • 웹 애플리케이션
  • 네트워크를 만드는 기술
  • 웹을 구성하는 기술
  • HTTP

🌿 웹 애플리케이션

웹 브라우저를 통해 접근이 가능한 어플리케이션

vs native application(특정 기기에 설치해서 사용)


🌿 네트워크를 만드는 기술

1. 프로토콜

TCP/IP 4계층 모델

vs OSI 참조 모델 7계층

주소

  • IP 주소: 할당됨
  • MAC 주소: 각 네트워크 기기에 제조사에서 할당하는 고유 시리얼

패킷

  • packet = header + payload = 원본 데이터를 작은 단위로 나눈 것 → 여러 회선을 공용해 통신을 주고 받음
  • vs 회선(circuit) 교환(switching) 방식

2. I(nternet) P(rotocol)

개념

  • 인터넷 상에서 사용하는 주소 체계

  • IP 주소만 가지고는 네트워크 상에서 송/수신이 가능하지는 않음

    • IP 프로토콜만 가지고는 IP에서 여러 애플리케이션이 동작할 때 특정 애플리케이션을 특정해 통신할 수 없음
    • 각 네트워크 기기는 MAC 주소를 IP 주소와 조합해야만 네트워크를 통한 통신이 가능

IP의 한계

  • 비연결성
  • 비신뢰성

3. TCP, UDP

공통점

둘 다 포트 번호 사용

차이점

통신/데이터의 신뢰성 vs 통신의 빠른 속도, 실시간 통신

적용

ex1) 비디오 스트리밍 상황에 주로 사용하는 방식
ex2) 미 국방부는 어떠한 점에 착안하여 TCP/IP가 극심한 전시 중에도 신뢰성을 잃지 않는다고 판단한 것인가?
ex3) DNS 서버가 TCP방식에서 동작한다면 어떠한 문제가 발생할까?

4. port

/* 나의 질문
1. 포트 번호는 통신 요청? 시 언제, 어떻게, 지정하지? -> 잘 알려진 포트의 경우 URI 등에 명시하지 않음 vs 그 외의 잘 알려지지 않은 포트(임시 포트 :8080 등)는 반드시 포함해야 함
2. 포트 번호를 지정 안 하면 어떤 일이 발생하나?
3. 같은 웹 브라우저를 동시에 2개 켜 놓고 같은 사이트에 접속을 해도 문제 없이 통신 가능 -> 어떠한 방식으로 원활히 통신이 가능한 것인가?
*/

5. URL, DNS

uniform resource locator = 인터넷 상에서/웹에 게시된 어떤 자원/리소스(html, img 등)(의 위치)를 찾기/특정하기 위해 브라우저에서 사용되는 메카니즘 = 서버가 제공되는 환경에 존재하는 파일의 위치

/* 나의 질문
1. "슬래시(/)를 이용해 서버의 폴더에 진입하거나 파일을 요청할 수 있음
-> 기본적인 보안의 일환으로 외부에서 직접 접근이 가능한 경우는 거의 없음
-> (웹 개발자가)어떻게 접근을 막지?
2. uri 요소 중 bookmark는 무엇인가?
3. codestates ip 주소를 브라우저 주소 창에 쳤을 때 왜 정상적으로 접속이 안 되지..?
*/

URI vs URL

uniform resource identifier = uniform resource locator의 기본 요소(scheme, hosts[:port], url-path) + query, bookmark


🌿 웹을 구성하는 기술

1. client-server architecture

  • 2-tier = client + server
  • 3-tier = 2-tier + database

2. web application architecture

클라이언트-서버 간의 연결에 대한 설명 방법 → 어떻게 애플리케이션 내부의 요소들이 상호 간에 소통하는지 설명

3. web application의 요청 흐름 (feat. 3단계(3-tier) 계층 구조(architecture))

  • presentation(표현)/API(REST API를 제공하는 애플리케이션의 경우) layer(계층) = web server, user interface 요소들 → 클라이언트의 요청을 직접적으로 전달받음/받아들임
/* user interface 요소들 = user 경험 관련 요소들, 웹 애플리케이션 기능적인 부분 외적인 요소들
e.g. 화면 출력, 로그, 알림, 시스템 통계, 환경 설정 등

Spring MVC의 Controller 클래스 = Spring MVC에서 클라이언트 요청의 최종 목적지
*/
  • application/business/service layer = business/domain logic = application server, 데이터 접근을 위한 경로 규격화, 어느 데이터베이스에 접근해서 데이터를 회수/저장할지 최적화 등; 애플리케이션의 핵심 로직 포함 → API 계층에서 전달받은 요청을 업무 도메인의 요구 사항에 맞게 구체적으로 + 비즈니스적으로 처리
/* domain knowledge -> 애플리케이션(의 서비스 계층)에서 비즈니스 로직(실제로 요청 사항을 처리하기 위해 Java 코드로 구현한 것)으로 구/표현
Spring MVC에서의 Model = Spring MVC 기반의 웹 애플리케이션이 클라이언트의 요청을 전달받고 요청 사항 처리 작업한 결과 데이터(클라이언트에게 응답으로 돌려줌)
*/
  • data access/persistence(영속성) layer = application의 데이터 저장소(데이터베이스 등)에 접근해서 데이터 불러오거나 비즈니스/서비스 계층에서 처리된 데이터를 저장하는 것을 담당
/* 3개 계층에 속하지 않은 web application 구조 요소들
1. cross-cutting
2. third-party integration
*/

💡 생각해보기

  1. microservice architecture의 장점 + 적용
  2. serverless architecture의 장점 + 적용

🍀 오늘의 소감

profile
green piano rabbit

0개의 댓글