IT STUDY LOG

[웹서비스 개발 기초] 01. 클라이언트-서버 아키텍처 본문

devops bootcamp 4/개발 및 배포

[웹서비스 개발 기초] 01. 클라이언트-서버 아키텍처

roheerumi 2023. 3. 15. 10:54

# 학습 목표

  • 클라이언트-서버 콘셉트를 이해할 수 있다.
    • 클라이언트-서버 아키텍처를 이해할 수 있다.
    • 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-datagram
      TCP, 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
Comments