분류 전체보기
Client-ServerReliable하고 잘 알려져 있으며 강력함.Client가 증가할 수록 Server의 수요가 증가한다.Scalability 달성이 어려움, SPoF P2P (Peer to Peer)분산된 리소스를 사용하는 시스템 및 애플리케이션 클래스.시스템 간의 직접적인 교환을 통해 리소스와 서비스 공유. 리소스에는 컴퓨팅 자원, 데이터 및 스토리지, 네트워크, State가 포함된다.네트워크의 모든 노드가 동일하게 작동하는 통신 모델.Not Centralized, 클라이언트가 서버이자 라우터이기도 하다.Self Organization (Join and Leave이 매우 잦다.)Node들은 Unreliable하고, Heterogeneous (신뢰할 수 없음, 이기종)Fault Tolerant (결..
이번 포스팅에서는 JPA를 이용하여 데이터를 조회할 때의 유의해야 할 내용들에 대해서 다루어 보려고 한다. 즉시 로딩과 지연 로딩 지연 로딩(Lazy Loading)은 엔터티의 관계를 로딩할 때, 실제로 필요한 시점까지 로딩을 지연시키는 방법이다. 이는 데이터베이스에서 필요한 데이터를 가져오는 시점을 늦추어서, 불필요한 데이터를 미리 로딩하지 않도록 한다. 즉시 로딩 (Eager Loading): 엔터티를 조회할 때, 연관된 엔터티의 데이터도 함께 조회하는 방법. @ManyToOne, @OneToOne과 같은 관계에 대해 디폴트로 적용되는 방식. fetch = FetchType.EAGER는 즉시 로딩을 사용하겠다는 뜻이다. 지연 로딩 (Lazy Loading): 연관된 엔터티의 데이터는 실제로 사용될 때..
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) → 여러 개의 전화번호를 가질 수 있음, ..
이전 포스팅에서 서로 다른 서비스들 간의 데이터 동기화를 Kafka를 이용하여 수행해보았다.이번에는 같은 서비스가 여러개의 인스턴스를 가지는 경우, 데이터의 불일치를 해결하는 일부 방법에 대해 살펴보려고 한다.사실 해당 내용은 공부를 하면서 여러가지 의문사항이 많이 남았는데 이 내용은 마지막에 서술하려고 한다. 문제점 Microservice에서는 여러개의 서비스 뿐 만 아니라, 같은 서비스가 여러개의 서버로 Scale-out되어 여러 인스턴스가 동작하고 있을 수 있다. 이들이 각자의 데이터베이스를 가지고 동작한다면 데이터 동기화의 문제가 발생할 수 있다. 예를 들어 Order-service의 주문을 100건 한다고 치면, 위의 3개의 Order-service들이 요청을 각각 나누어 처리하게 될 것이다.그..
마이크로서비스의 독립적인 서비스들은 각각 자체 데이터 스토어를 가지며 서로 통신하여 전체 시스템을 구성한다. 데이터 동기화는 이러한 독립적인 마이크로서비스 간에 데이터 일관성을 유지하고 서로의 상태를 동기화하기 위해 중요한 측면을 띄고 있다. E-Commerce 어플리케이션에서 예를 들면 주문 관리 서비스와 재고 관리 서비스가 각각의 데이터베이스를 가질 때, 주문이 발생하면 재고를 감소시켜야 한다. 이 때, 이벤트 기반의 Message Broker, 혹은 Message Queueing Service는 이런 데이터의 동기화에 유용하게 사용될 수 있다. 위 사례에서, Order-service가 주문을 처리함과 동시에 Message Broker에게 이벤트를 Produce하면서, Catalog-service는 ..
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 : 동일한 컴퓨팅 작업이 여러 번 실행되는 경우, 이는 결과를 평균화하거나 일부 실패가 발생하더라도 더 안..
이번 포스팅에서는 Kafka Connector를 설치하고, 데이터베이스와 같은 Source들 사이에서 데이터 이동을 Kafka Connect를 연결하여 수행해보려고 한다. Kafka에 대한 대략적인 개념은 해당 포스팅에 작성하였으므로 참고하면 좋을 것 같다. https://sjh9708.tistory.com/151 [Apache Kafka] Kafka의 주요 개념과 구성 요소 Apache Kafka는 데이터의 실시간 스트리밍 및 이벤트 처리에 유용한 도구로서 활용된다. Kafka는 대규모 분산 시스템에서 안정적이고 확장 가능한 메시지 큐와 이벤트 스트리밍 플랫폼으로 사용되 sjh9708.tistory.com Kafka Connect Connect를 통해 Source System(특정 데이터 소스, 스토..