분류 전체보기 62

Service Mesh 패턴 이란 ?

서비스 메쉬(Service Mesh) 패턴은 2010년대 중반에 등장했으며, 미국의 차량 공유 서비스인 Lyft가 2016년에 이 패턴을 최초로 대규모로 도입했습니다. Lyft는 마이크로서비스 아키텍처로의 전환 과정에서 서비스 간 통신의 관리 및 제어 문제를 해결하기 위해 Envoy 프록시라는 오픈소스 소프트웨어를 개발했고, 이를 통해 서비스 메쉬의 개념이 탄생하게 되었습니다. 1. 서비스 메쉬의 기원과 초기 도입기원 : 2010년대 초반부터 많은 기업들이 기존의 모놀리식(Monolithic) 애플리케이션을 마이크로서비스 아키텍처로 전환하면서, 서비스 간 통신과 관련된 다양한 문제에 직면하게 되었습니다. 서비스가 점점 더 분리되고 많아지면서 통신이 복잡해졌고, 보안, 로깅, 모니터링, 장애 복구 등 관리..

Strangler Pattern 이란 ?

1.개요Strangler 패턴은 소프트웨어 아키텍트 **마틴 파울러(Martin Fowler)**가 처음 제안한 개념입니다. 그는 2004년에 자신의 블로그를 통해 Strangler 패턴의 개념을 발표했으며, 기존 시스템을 새로운 시스템으로 점진적으로 전환하는 방식의 유용성을 강조했습니다. 마틴 파울러는 호주에서 자생하는 "strangler fig" 식물이 기존 나무를 서서히 감싸고 대체하는 생장 방식에서 이 아이디어를 얻었습니다.이 패턴을 통해 기존 시스템을 점진적으로 대체할 수 있는 방법을 설명하면서, 특히 시스템 운영 중에도 리스크를 최소화하며 새로운 기능을 도입할 수 있는 점을 장점으로 언급했습니다. 이는 레거시 시스템을 모던한 아키텍처로 전환하는 과정에서 매우 유용한 접근 방식으로, 이후 다양한..

Circuit Breaker 패턴 이란 ?

I. 개요Circuit Breaker 패턴은 소프트웨어 아키텍트이자 마이크로서비스와 관련된 주요 개념들을 소개한 마틴 파울러(Martin Fowler)와 그의 동료 마이클 네이거(Michael Nygard)가 발전시킨 패턴입니다. 이 패턴은 네트워크와 외부 시스템의 의존성이 커지면서 장애가 연쇄적으로 발생할 가능성이 높아지는 상황에서 안정성을 유지하기 위해 소개되었습니다. 마이클 네이거는 그의 저서 **"Release It!"** (2007년 출판)에서 Circuit Breaker 패턴을 구체적으로 설명했습니다. 이 책은 분산 시스템에서 안정성을 높이기 위한 다양한 패턴과 기법들을 다루고 있으며, Circuit Breaker 패턴을 통해 서비스 호출 시 장애 전파를 막고 시스템 전체의 안정성을 유지하는 ..

API Gateway Pattern 이란?

API 게이트웨이 패턴은 특정 개인이나 조직이 공식적으로 발표한 개념이라기보다는, 마이크로서비스 아키텍처가 널리 사용되기 시작하면서 자연스럽게 등장하고 발전한 패턴입니다. 2010년대 초반, 넷플릭스(Netflix)와 같은 대규모 웹 서비스 회사들이 마이크로서비스 아키텍처를 도입하면서 이를 효과적으로 관리하기 위한 다양한 패턴을 연구하고 공유했는데, 그중 하나가 바로 API 게이트웨이 패턴입니다. 넷플릭스는 마이크로서비스 기반 애플리케이션의 클라이언트 요청을 관리하기 위해 자체 API 게이트웨이 솔루션인 **Zuul**을 개발했고, 이는 API 게이트웨이 패턴의 초기 사례 중 하나로 꼽힙니다. 이후 AWS, Microsoft, Google 등 여러 클라우드 제공업체가 API 게이트웨이 서비스를 제공하며 ..

Saga 패턴 이란 ?

Saga 패턴은 1987년에 Hector Garcia-Molina와 Kenneth Salem이 발표했습니다. 이들은 논문 "Sagas"를 통해, 긴 트랜잭션을 효율적으로 처리하기 위한 방법으로 Saga 패턴을 제안했습니다. 이 패턴은 주로 분산 시스템의 트랜잭션 관리에서 사용되며, 트랜잭션을 여러 개의 작은 작업으로 나누고, 실패 시 이를 복구할 수 있는 보상 동작을 사용해 시스템의 일관성을 유지하는 방법을 설명합니다. Garcia-Molina와 Salem의 연구는 데이터베이스 및 분산 시스템의 안정성을 확보하는 방안으로 큰 영향을 미쳤으며, 이후 마이크로서비스 아키텍처가 대두되면서 Saga 패턴이 더욱 주목받게 되었습니다. SAGA 패턴이란 마이크로서비스들끼리 이벤트를 주고 받아 특정 마이크로서비스에서..

CQRS (Command Query Responsibility Segregation) 패턴 이란 ?

CQRS 패턴은 마이크로소프트의 소프트웨어 아키텍트이자 소프트웨어 설계 전문가인 그레그 영(Greg Young)에 의해 제안되었습니다. CQRS 패턴은 2000년대 후반에, 정확히는 2009년경, 그가 DDD(Domain-Driven Design)와 관련된 커뮤니티와 컨퍼런스에서 CQRS 개념을 처음 설명하면서 널리 알려지기 시작했습니다.  또한, CQRS 패턴은 DDD(Domain-Driven Design) 커뮤니티에서도 널리 채택되었으며, 에릭 에반스(Eric Evans)의 DDD 철학과 밀접한 관련이 있습니다. 그레그 영은 DDD의 철학을 더욱 발전시켜 CQRS와 같은 패턴을 만들어냈으며, 그 이후 마이크로서비스 아키텍처와 이벤트 소싱 등에서도 자주 사용되며 많은 기업에서 이를 채택하고 있습니다. ..

T4, V100, A100, H100 GPU의 성능 차이 및 클라우드 인스턴스 비교

T4, V100, A100, H100은 모두 NVIDIA의 데이터 센터용 GPU이며, 주로 인공지능(AI), 딥러닝, 고성능 컴퓨팅(HPC) 작업에 사용됩니다. 각 GPU는 성능과 기능 면에서 차이가 있으며, 세대가 올라갈수록 일반적으로 성능이 향상됩니다. 아래는 각 GPU의 주요 성능 차이점과 용도에 대한 비교입니다.  1. NVIDIA T4   - 세대: Turing 아키텍처   - 메모리: 16GB GDDR6   - 성능: FP32 기준으로 약 8.1 TFLOPS, INT8에서는 약 130 TOPS   - 사용처: 주로 추론(inference) 작업에 적합하며, 특히 전력 소모가 적고 비용 대비 효율이 높아 클라우드 서비스에서 널리 사용됩니다.   - 장점: 에너지 효율이 좋아 소규모 또는 중간 규..

클라우드 2024.11.03

VPC(Virtual Private Cloud)란 ? 클라우드 주요 3사 VPC 소개

AWS의 VPC(Virtual Private Cloud)는 사용자에게 논리적으로 격리된 네트워크 환경을 제공합니다. 이 환경을 통해 AWS 클라우드 리소스 간의 네트워크를 설정하고 관리할 수 있습니다. VPC의 개념은 클라우드 네트워크의 기본 요소 중 하나로, Microsoft Azure와 Google Cloud Platform(GCP)에서도 유사하게 제공됩니다. 구체적인 설명을 AWS VPC를 중심으로 하고, Azure 및 GCP의 유사한 기능과 차이점을 소개하겠습니다.  1. AWS의 VPC(Virtual Private Cloud)AWS VPC는 가상 네트워크를 생성하여 사용자가 직접 네트워크 설정을 관리할 수 있게 합니다. 주요 기능은 다음과 같습니다: 1) 서브넷 구성:  - VPC 내부에서 여러..

클라우드 2024.10.31

파이썬에서 클래스 변수와 인스턴스 변수의 차이점

파이썬에서 클래스 변수와 인스턴스 변수는 변수의 소유 범위와 생애가 다릅니다. 이를 이해하기 위해 간단한 예시와 함께 설명해 드리겠습니다.  1. 클래스 변수- 클래스 변수는 클래스 자체에 속하며, 모든 인스턴스가 공유하는 변수입니다.- 클래스가 정의될 때 선언되며, 모든 인스턴스에서 같은 값을 참조합니다.- 클래스를 통해 직접 접근하거나 인스턴스를 통해 접근할 수 있지만, 값을 변경하면 모든 인스턴스에서 영향을 받습니다.  2. 인스턴스 변수- 인스턴스 변수는 각 인스턴스에 속하며, 인스턴스가 생성될 때마다 독립적으로 만들어집니다.- 따라서 한 인스턴스에서 인스턴스 변수의 값을 변경해도 다른 인스턴스에 영향을 주지 않습니다.  예제 코드 아래의 `Person` 클래스 예제를 통해 클래스 변수와 인스턴스..

파이썬 2024.10.29

파이썬 time.sleep() 함수 사용법

`time.sleep()` 함수는 파이썬의 `time` 모듈에 포함된 함수로, 프로그램의 실행을 지정된 시간 동안 일시 정지(지연)시키는 역할을 합니다. 이 함수의 인수로 전달된 시간은 초 단위로 해석됩니다. 따라서 `time.sleep(1)`은 프로그램의 실행을 1초 동안 멈추라는 의미입니다.  구체적으로 설명하자면: 1. 모듈 임포트: `time.sleep()`을 사용하기 위해서는 먼저 `time` 모듈을 임포트해야 합니다.   ```python   import time   ``` 2. 함수 사용: `time.sleep()` 함수는 인수로 실수(float) 또는 정수(int)를 받습니다. 이 인수는 프로그램을 멈추는 시간을 초 단위로 나타냅니다.   - `time.sleep(1)`은 1초 동안 멈추라..

파이썬 2024.10.28