CS/아키텍쳐 & 분산시스템
클라우드 컴퓨팅은 인터넷을 통해 컴퓨터 시스템, 데이터 저장 및 처리 리소스에 대한 접근을 제공하는 기술과 모델이다. 기존의 개별적으로 소유하고 운영되는 서버 및 데이터 센터를 사용하는 방식(On-demend)에서 벗어나, 필요한 컴퓨팅 리소스를 인터넷을 통해 가상적으로 공유하고 활용하는 개념이다. 인터넷 공유의 진화네트워크 : 컴퓨터의 연결하는 Local Network네트워크 공유 : TCP/IP의 등장 → 로컬 네트워크 간의 연결정보 공유 : World Wide Web자원 공유 : Greed Computing → 원격 리소스 공유 및 협업을 위한 표준 및 소프트웨어서비스 공유 : Cloud Computing : 웹을 통한 서비스로서의 모든 것. Ubiquitous, Scalable, Availabl..
Client-ServerReliable하고 잘 알려져 있으며 강력함.Client가 증가할 수록 Server의 수요가 증가한다.Scalability 달성이 어려움, SPoF P2P (Peer to Peer)분산된 리소스를 사용하는 시스템 및 애플리케이션 클래스.시스템 간의 직접적인 교환을 통해 리소스와 서비스 공유. 리소스에는 컴퓨팅 자원, 데이터 및 스토리지, 네트워크, State가 포함된다.네트워크의 모든 노드가 동일하게 작동하는 통신 모델.Not Centralized, 클라이언트가 서버이자 라우터이기도 하다.Self Organization (Join and Leave이 매우 잦다.)Node들은 Unreliable하고, Heterogeneous (신뢰할 수 없음, 이기종)Fault Tolerant (결..
Web Proxy 필요성 : 웹 트래픽의 급격한 증가, Latency 증가, Web Accesser들의 불균형 -> 서버 및 네트워크 Load Hotspot이 생성됨해결책 : Web Proxy Cache 사용 -> Latency, Server/Network Load 감소 웹 프록시 : 클라이언트와 서버 간의 트래픽을 중계하는 서버. 클라이언트는 웹 프록시를 경유하여 서버에 접근하고, 웹 프록시는 클라이언트의 요청에 대한 응답을 제공한다. 이 과정에서 웹 프록시는 중간에서 요청과 응답을 캐싱하여 빠른 응답을 제공할 수 있다. Web Proxy의 Consistency 일관성 문제 : 웹페이지는 다양한 업데이트 빈도를 가지고 있음. 프록시 캐시의 일관성 유지 방법 : Send Invalidate/Updat..
DNS(Domain Name System)은 인터넷에서 도메인 이름을 호스트의 IP 주소로 매핑해주는 서버로 잘 알라져 있다.DNS는 분산 시스템 관점에서 계층적 네임스페이스를 활용한 시스템이다. Namespace의 개념 Name : Entity를 Refer(참조)할 때 사용할 수 있는 시퀀스(Bit or String)분산 시스템에서의 Entity = 자원(Resources)Access Point : Entity를 엑세스 할 때 필요Address : Access Point의 NameEntity의 Address를 Name으로 사용하지 않음 → 엔티티의 엑세스 포인트가 변경될 수 있음. 둘 이상의 엑세스 포인트가 있을 수 있음예) 전화번호(개인의 Address) → 여러 개의 전화번호를 가질 수 있음, ..
Fault Tolerance 분산 시스템에서 하나 이상의 장치의 실패에도 계속해서 정상적으로 동작할 수 있는 능력을 의미한다. 시스템의 안정성과 가용성을 보장하며, 장애가 발생했을 때에도 서비스의 중단을 최소화하는 목표를 가진다. 용어Failure : 정상적인 기능을 수행할 수 없는 상태(메시지 손상)Error : 의도와 정확성에서 의도치 않게 벗어나는 행위(0대신 1을 읽는 것)Fault : Error의 원인 (설계, 제조결함, 성능저하 등..)Recursive : Failure은 Fault가 될 수 있음.제조 결함(Fault) → 디스크 오류(Failure)디스크 장애(Failure) → 데이터베이스 장애(Failure)데이터베이스 장애(Failure) → 이메일 서비스 장애(Fauilure) Fa..
Replication데이터나 서비스를 여러 개로 복제하는 것을 의미한다. 이는 분산 시스템에서 Scalability(확장성) 및 Reliability(신뢰성) 확보를 위한 테크닉으로서 매우 중요한 개념이다. Object Replication 방법애플리케이션이 복제하는 방법 : App이 Consistency Issue를 해결해야 함Middleware가 복제 : 개발을 단순화하지만 Object 특화 솔루션을 어렵게 한다. 데이터 복제와 컴퓨팅 작업의 복제Data Replication : 여러 저장장치에 동일한 데이터가 저장된 경우(DNS, 브라우저 캐시..)Computation Replication : 동일한 컴퓨팅 작업이 여러 번 실행되는 경우, 이는 결과를 평균화하거나 일부 실패가 발생하더라도 더 안..
선출 알고리즘 (Election Algorithms)여러 노드 중에서 한 노드를 리더 또는 Coordinator(코디네이터)로 선택하는 역할을 수행한다. 이러한 알고리즘은 분산 시스템에서의 리더 노드를 동적으로 정하는 데 사용되며, 안정성과 효율성을 유지하는 데 중요하다. 분산 시스템에서는 여러 노드가 동시에 동작하며, 리더는 전체 시스템에서 특정 임무를 담당하거나, 특정 동작을 조정하며, 일관성을 유지하거나 효율적인 리소스 할당을 수행하는 역할을 수행한다. 여러 노드 중 하나의 노드를 리더로 선택하는 것은 중요한 과정이다. 1. Centralized Model → Coordinator Process의 Fail 시 새로운 Coordinator을 Election하는 과정을 거침2. 각 활성 프로세스가 고..
Distributed Mutual Exclusion 분산 시스템에서 여러 프로세스가 공유 자원에 대한 접근을 조율하고, 한 번에 하나의 프로세스만이 해당 자원에 접근하도록 하는 기술이나 알고리즘을 의미한다. 다수의 프로세스가 동시에 공유 자원에 접근할 때 충돌이 발생하면 데이터 일관성 문제나 부정확한 결과를 야기할 수 있으며 따라서 이러한 상황을 피하기 위해 상호 배제가 필요하다. 특히 분산 시스템의 경우 여러 노드 간의 효율적인 협력이 필요한 환경에서 중요한 역할을 하면서 이를 처리하기 위한 과정이 단일 시스템에 비해서 복잡하다. 요구사항리소스에 대한 동시 엑세스 방지 → 분산 시스템의 여러 프로세스는 일부 리소스에 대한 독점 엑세스를 원함Safety : Mutual Exclusion(상호 배제) →..
분산 시스템에서의 동기화(Synchronization)의 필요성일관성 유지: 여러 대의 컴퓨터가 네트워크를 통해 상호 작용하는 분산 시스템에서는 데이터의 일관성을 유지하는 것이 중요하다.트랜잭션 처리: 분산 데이터베이스나 분산 시스템에서 트랜잭션을 일관성 있게 처리하려면 서로 다른 노드 간에 동기화된 타임스탬프나 논리적인 순서가 필요하다.분산 시스템 성능 향상: 동기화를 통해 병렬처리를 효과적으로 수행함으로써 성능을 향상시킬 수 있다.상태 공유: 여러 컴퓨터가 상태를 공유하고 특정 이벤트에 대한 조율을 필요로 할 때 동기화를 통해 상태 일관성을 유지하게 한다. RPC나 Apache Kafka를 비롯한 Message Broker가 해당 역할을 할 수 있다. Message Broker은 메시지 기반의 비동기..