TY blog

분산 소프트웨어 공학 본문

소프트웨어 공학

분산 소프트웨어 공학

주짓수하는 개발자 2023. 11. 28. 17:03
1. 분산시스템 

 

사용자에게 하나의 시스템으로 보이는 독립적인 컴퓨터들의 집합 

 

* 분산 시스템의 장점

 

  1. 자원공유(resource sharing) : 하드웨어 및 소프트웨어 자원을 공유
  2. 개방성(openness) : 표준 인터넷 프로토콜을 준수, 여러 공급업체의 장비와 소프트웨어 사용
  3. 동시성(concurrency) : 여러 프로세스들이 동시에 수행
  4. 확장성(scalability) : 새로운 자원을 추가하여 처리능력(throughput)을 올림
  5. 결함 내성(fault tolerance) : 결함이 발생하였을 때에도 서비스를 제공할 수 있는 능력 

* 전체 시스템의 성능은 네트워크의 영향을 많이 받는다.

 - 네트워크 대역폭, 네트워크 부하 

 

* 서비스 품질

 서비스의 피크 타임에 높은 품질의 서비스를 제공할 수 있는 시스템은 비용 효율 적이지 않음, 클라우드 컴퓨팅을 사용하여 해결 => 평소 서비스에는 작은 용량을, 피크 타임에는 높은 용량을 사용한다. 

 

  • 미들웨어 

    운영체제애플래케이션 사이에서 공통 서비스를 제공 

 

  • 분산 시스템의 미들웨어 

   상호 작용 지원 : 언어, 플랫폼 독립성 

   공통 서비스의 제공 : 여러 컴포넌트에서 재사용 가능한 서비스를 제공한다. 

 

2. 클라이언트-서버 컴퓨팅

 

  1. 클라이언트-서버 아키텍처 : 서버가 제공하는 서비스의 집합, 클라이언트는 서버가 어디에 있는지 알아야 한다. 
  2. 멀티 프로세서 시스템 : 부하균형(load balancing) 소프트웨어가 필요할 수 있음 (서버 분산)

* 클라이언트/서버 계층 서비스 시스템 

  1. 표현(presentation) 계층 : 사용자에게 정보표현, 사용자 상호작용 관리
  2. 데이터 처리(data-handling) 계층 : 클라이언트로부터 전송되는 데이터를 관리, 웹페이지 생성 (web server)
  3. 애플리케이션 처리(application processing) 계층 : 애플리케이션 논리의 구현 (application server)
  4. 데이터베이스(database) 계층 : 데이터를 저장하고 쿼리 서비스를 제공 (DBMS) 

 

3. 클라이언트-서버 아키텍처  

 

  1. Thin 클라이언트 모델 : 표현계층만 클라이언트에서 구현, 나머지 계층은 서버에서 구현  
  2. Fat 클라이언트 모델 : 표현과 애플리케이션 처리(일부)를 클라이언트에서 구현, 데이터 관리와 데이터베이스 기능을 서버에서 구현 
4. 피어-투-피어 아키텍처

 

  • 네트워크 상의 어떤 노드도 주어진 연산을 수행할 수 있는 비중앙집중적(decentralized) 시스템
  • 서버와 클라이언트 구분이 없다.

ex) 블록체인 기술, 비트코인 

 

 

 

* 참고문헌 : (주)한티에듀 소프트웨어공학 제10판 

Comments