IT STUDY LOG
[웹서비스 개발 기초] 01. 클라이언트-서버 아키텍처 본문
# 학습 목표
- 클라이언트-서버 콘셉트를 이해할 수 있다.
- 클라이언트-서버 아키텍처를 이해할 수 있다.
- HTTP를 이용한 클라이언트-서버 통신을 이해할 수 있다.
- API의 개념을 이해할 수 있다.
# 학습 내용
1. 클라이언트-서버 아키텍처
- 아키텍처 패턴
- 개념
- 아키텍처 설계할 때 참조할 수 있는 전형적인 해결 방식 또는 예제
- 장점
- 시행 착오를 줄여 개발 시간을 단축시키고, 고품질의 소프트웨어를 생산할 수 있음
- 검증된 구조로 개발하므로 안정적인 개발 가능
- 이해관계자들이 공통된 아키텍처를 공유할 수 있어 의사소통이 간편
- 시스템 구조 이해가 쉬워 개발 참여하지 않은 사람도 손쉽게 유지보수 수행 가능
- 시스템 특성을 개발 전에 예측 하는 것이 가능
- 종류
종류 내용 레이어 패턴 - 시스템을 계층으로 구분하여 구성
- 각각 서브시스템들이 계층 구조를 이룸
- 상위 계층이 하위 계층에 대한 서비스 제공자가 되고 하위 계층은 상위 계층의 클라이언트가 됨
- 상호작용이 두 계층에서 이루어지므로 유지보수 용이
- 대표적인 예 : OSI 참조 모델클라이언트-서버 패턴 - 하나의 서버 컴포넌트와 다수의 클라이언트 컴포넌트로 구성
- 사용자는 클라이언트를 통해서 서버에 요청하고 클라이언트가 응답을 받아 사용자에게 제공하는 방식
- 서버는 클라이언트 요청에 대비해 항상 대기 상태 유지
- 클라이언트, 서버는 요청과 응답을 받기 위해 동기화되는 경우를 제외하고는 서로 독립적파이프-필터 패턴 - 데이터스트림 절차의 각 단계를 필터 컴포넌트로 캡슐화해 파이프를 통해 데이터를 전송하는 패턴
- 필터 컴포넌트의 장점: 재사용성, 추가 용이해 확장 용이
- 다양한 파이프라인 구축이 가능
- 주로 데이터 변환, 버퍼링, 동기화 등에 사용
- 대표적인 예 : 유닉스 셸모델-뷰-컨트롤러 패턴 - 서브 시스템을 3개 부분으로 구조화하는 패턴
> 모델 : 서브 시스템의 핵심 기능과 데이터 보관
> 뷰 : 사용자에게 정보를 표시
> 컨트롤러 : 사용자로부터 받은 입력 처리
- 각 부분은 분리되어있으므로 독립적으로 개발 작업 수행 가능
- 여러개의 뷰를 만들 수 있으므로 한 개 모델에 대해 여러 뷰를 필요로하는 대화형 애플리케이션에 적합마스터-슬레이브 패턴 - 마스터 컴포넌트에서 슬레이브 컴포넌트로 작업 분할 후, 슬레이브 컴포넌트에서 처리 결과를 돌려받는 방식
- 장애 허용 시스템, 병렬 컴퓨팅 시스템에서 주로 활용브로커 패턴 - 사용자가 원하는 서비스와 특성을 브로커 컴포넌트에 요청하면 브로커 컴포넌트가 요청에 맞는 컴포넌트와 사용자를 연결
- 분산 환경 시스템에 주로 활용피어-투-피어 패턴 - 피어 == 하나의 컴포넌트이자 클라이언트, 서버 역할이 될 수 있음
- 멀티스레딩 방식을 사용이벤트-버스 패턴 - 소스가 특정 채널에 이벤트 메시지를 발행하면 해당 채널을 구독한 리스너들이 메시지를 받아 이벤트를 처리
- 주요 4가지 컴포넌트
> 이벤트를 생성하는 소스
> 이벤트를 수행하는 리스너
> 이벤트의 통로인 채널
> 채널들을 관리하는 버스블랙보드 패턴 - 모든 컴포넌트들이 공유 데이터 저장소와 블랙보드 컴포넌트에 접근이 가능한 형태
- 컴포넌트들은 검색을 통해 블랙보드에서 원하는 데이터를 찾음
- 해결책이 명확하지 않은 문제 처리에 유용한 패턴
- 음성인식, 차량 식별, 신호 해석에 주로 사용인터프리터 패턴 - 프로그램 코드 각 라인을 수행하는 방법을 지정하고 기호마다 클래스를 갖도록 구성
- 특정 언어로 작성된 프로그램 코드를 해석하는 컴포넌트를 설계할 때 사
- 개념
출처 :시나공 정보처리기사 필기
- 클라이언트-아키텍처 패턴
- 개요
클라이언트 서버 특징 리소스를 사용하는 애플리케이션 리소스를 제공하는 곳 종류 - 웹 사이트
- 웹 앱
- 스마트폰/태블릿 플랫폼
- 데스크탑 플랫폼- 파일을 제공하는 파일 서버
- 웹 사이트에서 필요로하는 정보를 제공하는 웹 서버
- 메일 송수신하는 메일 서버
- 데이터베이스 - 분류
2-tier 3-tier - 클라이언트 <-> 서버
- 클라이언트가 직접 DB에 접근
- 거의 모든 비즈니스 로직을 클라이언트에서 처리
- 비즈니스 로직 변경 시 클라이언트로 프로그램 다시 배포 필요
- 클라이언트가 직접 db 접근하므로 보안에 취약- 클라이언트 <-> 웹 애플리케이션 서버(웹 서버->WAS) <-> DB
- DB 서버를 별도로 구성
- 클라이언트가 직접 DB 접근하지 않고 웹 서버와 프로그램을 경유하여 접근
- 비즈니스 로직 수정 시 클라이언트 수정할 필요 없음
- 비즈니스 로직 모듈화하여 재사용 가능
- 개요
출처 : https://to-moneyking.tistory.com/64
- 프론트엔드와 백엔드
- 프론트엔드: 클라이언트와 같이 사용자가 직접 눈으로 보는 상호작용을 할 수 있는 부분을 개발하는 영역
- 백엔드: 사용자 눈에 보이지 않는 서버 뒤에서 작동하는 부분을 개발하는 영역(DB 등 시스템 설계까지 포함)
2. HTTP를 이용한 클라이언트-서버 통신과 API
- 클라이언트와 서버의 통신
- 개요
- 요청과 응답을 통해 통신
- 개요
- 프로토콜
- 개요
- 네트워크 상에서 노드간 데이터의 송수신을 할 수 있도록 정한 통신 규약
- 구성 요소
- 구문 : 데이터의 형식, 부호화, 신호, 레벨등을 규정
- 의미 : 전송 제어와 오류 관리를 위한 제어 정보를 포함
- 타이밍 : 기기 간의 통신 속도, 메시지 순서 제어 등을 규정
- 기능
- 데이터의 분할
- 캡슐화
- 프레이밍
- 연결 제어
- 흐름 제어
- 오류 제어
- 동기화
- 전달 순서 제어
- 다중화
- 라우팅
- 주소 부여
- 주요 프로토콜 종류
OSI
계층OSI
이름TCP
계층TCP
이름단위(PDU) 프로토콜 대표 장비 7 응용 계층 4 응용 계층 data HTTP, SMTP, SSH, FTP, Telnet, DNS, modbus, SIP, AFP, APPC, MAP 6 표현 계층 data ASCII, MPEG, JPEG, MIDI, EBCDIC, XDR, AFP, PAP 5 세션 계층 data NetBIOS, SAP, SDP, PIPO, SSL, TLS, NWLink, ASP, ADSP, ZIP, DLC 4 전송 계층 3 전송 계층 tcp-segment,
udp-datagramTCP, UDP, SPX, SCTP, NetBEUI, RTP, ATP, NBP, AEP, OSPF 게이트웨이 3 네트워크 계층 2 인터넷 계층 packet IP, IPX, IPsec, ICMP, ARP, NetBEUI, RIP, BGP, DDP, PLP 라우터 2 데이터 링크 계층 1 네트워크 인터페이스 계층 frame Ethernet, Token Ring, AppleTalk, PPP, ATM, MAC, HDLC, FDDI, LLC, ALOHA 브릿지, 스위치 1 물리 계층 bit 10BASE-T, 100BASE-TX, ISDN, wired, wireless, RS-232, DSL, Twinax 허브, 리피터 - API
- 개요
- Application Programming Interface
- 서버가 클라이언트에게 리소스를 잘 활용할 수 있도록 제공하는 인터페이스
- 웹에서는 HTTP 프로토콜을 사용하며 주소(URL, URI)를 통해 접근 가
- API 디자인을 잘 하는 법
- RESTFUL API 사용
- CRUD와 RESTFUL API 메소드
-
요청 적절한 메소드 C(Create) 추가 POST R(Read) 조회 GET U(Update) 갱신 PUT 또는 PATCH (보안상 권장하지 않음) D(Delete) 삭제 DELETE (보안상 권장하지 않음)
- 개요
- 개요
출처 : 에듀온 유상통 컴퓨터일반(유수 저), http://wiki.hash.kr/index.php/OSI_7_%EA%B3%84%EC%B8%B5
'devops bootcamp 4 > 개발 및 배포' 카테고리의 다른 글
[Git과 버전 관리 시스템] 02. Git (0) | 2023.03.20 |
---|---|
[Git과 버전 관리 시스템] 01. 개발자 도구 Git 설치 (0) | 2023.03.20 |
[웹서비스 개발 기초] 04. HTTP 요청 실습 (Postman) (0) | 2023.03.17 |
[웹서비스 개발 기초] 03. HTTP 기초 (0) | 2023.03.16 |
[웹서비스 개발 기초] 02. 웹서비스 접근하기 (0) | 2023.03.15 |
Comments