분류 전체보기 296

DynamoDB에 대한 5가지 오해

The DynamoDB Book 1. DynamoDB는 키-값 저장소일 뿐입니다.당신은 DynamoDB가 단순한 액세스 패턴만 처리할 수 있다고 들었을지도 모릅니다. 개별 항목을 삽입하고 다시 읽어오는 것뿐이며, 그보다 복잡한 것은 "진짜" 데이터베이스를 사용해야 한다고 말이죠. 이보다 더 사실과 거리가 먼 말은 없습니다. DynamoDB는 여러 레코드 간의 관계(일대다 관계에 관한 11장과 다대다 관계에 관한 12장 참조)와 필터링에 관한 복잡한 요구사항(13장 참조)을 처리할 수 있습니다. 관계형 데이터베이스와는 다른 방식으로 수행하지만, 여전히 가능합니다. 18-22장의 예제에서는 GitHub 메타데이터 백엔드 전체를 모델링하는 것을 포함한 몇 가지 복잡한 패턴을 살펴봅니다. 더 복잡한 예제는 10..

DynamoDB의 역사

DynamoDB는 Amazon Web Services(AWS)에서 개발한 완전 관리형 NoSQL 데이터베이스 서비스로, 다음과 같은 역사적 발전 과정을 거쳤습니다:기원 및 개발Dynamo 논문 (2007): DynamoDB의 기술적 기반은 Amazon이 2007년에 발표한 "Dynamo: Amazon's Highly Available Key-value Store"라는 논문에서 시작되었습니다. 이 논문은 Amazon의 내부 키-값 저장소 시스템을 설명했으며, 높은 가용성과 확장성을 갖춘 분산 데이터베이스 설계의 기초가 되었습니다.SimpleDB (2007): Amazon은 먼저 SimpleDB라는 클라우드 기반 NoSQL 데이터베이스를 출시했으나, 이는 확장성 제한이 있었습니다.DynamoDB 출시 (20..

[팁] 파워쉘에 ANSI 색상 나오게 하는 방법

Windows 10의 콘솔 창은 원칙적으로 VT(가상 터미널) / ANSI 이스케이프 시퀀스를 지원하지만, 기본적으로 지원은 꺼져 있습니다.간단히 말해서, 레지스트리 키 [HKEY_CURRENT_USER\Console]에서 가상 터미널 레벨 DWORD 값을 만들거나 1로 설정합니다. PowerShellSet-ItemProperty HKCU:\Console VirtualTerminalLevel -Type DWORD 1  cmd.exereg add HKCU\Console /v VirtualTerminalLevel /t REG_DWORD /d 1

각종 팁 2024.11.21

Agones: Kubernetes 기반 게임 서버 오케스트레이션 도구

게임 개발이 발전함에 따라 멀티플레이어 게임의 인프라 관리도 점점 더 복잡해지고 있습니다. 수천, 심지어 수만 명의 플레이어를 지원하기 위해 안정적이고 확장 가능한 게임 서버 관리 도구가 필수적입니다. 이러한 요구를 충족하기 위해 Google과 Ubisoft가 공동으로 개발한 오픈소스 프로젝트 Agones가 등장했습니다.이 글에서는 Agones의 역할, 필요성, 구성 요소 및 기본 명령어를 중심으로 살펴보겠습니다.  Agones는 Kubernetes 기반 게임 서버 오케스트레이션 도구로, Kubernetes 클러스터에서 게임 서버를 관리하고 배포할 수 있도록 설계되었습니다. Kubernetes의 강력한 컨테이너 관리 기능을 활용하여, 멀티플레이어 게임에 최적화된 서버 인프라를 제공합니다. 주요 역할:게임..

[Kubernetes] kubectl의 핵심 기능 요약

Kubernetes는 클라우드 환경에서 애플리케이션을 배포, 확장, 관리하는 강력한 도구입니다. 이를 제어하는 핵심 CLI 도구인 kubectl은 개발자와 운영자를 연결하는 중요한 다리 역할을 합니다. 이번 글에서는 kubectl과 Kubernetes의 주요 구성 요소, 그리고 실용적인 명령어 사용법을 정리해보겠습니다.kubectl: Kubernetes CLI 도구kubectl은 Kubernetes 클러스터와 상호작용하는 데 필요한 명령줄 인터페이스(CLI)입니다. 이를 통해 클러스터의 리소스를 관리하고 조작할 수 있습니다.주요 역할:파드(Pod) 생성 및 삭제배포(Deployment) 관리클러스터 상태 점검 및 리소스 조회기본 사용법: 명령어를 입력하여 클러스터와 상호작용합니다.모든 파드 조회: kub..

Helm: Kubernetes 패키지 매니저

Kubernetes는 애플리케이션 배포와 관리를 위한 강력한 도구입니다. 하지만 복잡한 애플리케이션 구성과 배포를 수동으로 관리하려면 많은 노력이 필요합니다. 이 문제를 해결하기 위해 등장한 도구가 바로 Helm입니다. 이 글에서는 Helm의 역할, 필요성, 그리고 주요 명령어를 중심으로 Helm의 강점을 살펴보겠습니다.Helm이란 무엇인가?Helm은 Kubernetes 패키지 매니저로, 애플리케이션을 쉽게 정의, 설치, 관리할 수 있도록 도와줍니다. Helm을 사용하면 Kubernetes 리소스의 컬렉션인 차트(Charts)를 통해 애플리케이션을 간편하게 배포할 수 있습니다. 주요 역할:Kubernetes 애플리케이션 패키징애플리케이션 배포 및 관리 자동화복잡한 애플리케이션 구성의 단순화왜 Helm을 ..

[go] golang의 %w

%w%w는 주로 fmt.Errorf 함수에서 오류(wrapping errors)를 감쌀 때 사용됩니다.Go 1.13에서 도입된 기능으로, 새로운 오류를 생성하면서 기존 오류를 감싸기(wrap) 위해 사용합니다. %w는 fmt.Printf와 같은 함수에서 직접적으로 사용되지 않으며, 주로 fmt.Errorf와 함께 사용됩니다. package mainimport ( "errors" "fmt")func main() { originalErr := errors.New("original error") wrappedErr := fmt.Errorf("new context: %w", originalErr) fmt.Println(wrappedErr) // new context: original..

[go] golang의 가비지 콜렉터

Go 언어(Golang)에서 가비지 컬렉터(Garbage Collector, GC)는 자동으로 메모리를 관리하여 개발자가 직접 메모리 해제를 처리하지 않도록 도와주는 중요한 기능입니다. Go의 가비지 컬렉터는 다중 스레드, 스톱-더-월드(stop-the-world), 분할 수집 방식을 채택하여 동작합니다.Go의 가비지 컬렉션 특징Go의 가비지 컬렉션은 Mark-and-Sweep 알고리즘을 기본으로 사용하여 동작합니다. 이 알고리즘은 크게 두 단계로 나눠집니다:Mark 단계: GC는 루트(root)에서부터 시작해 참조가 되는 객체들을 추적하고, 사용 중인 객체에 표시를 합니다.Sweep 단계: 사용되지 않는 메모리를 해제합니다. Mark되지 않은 객체들은 더 이상 사용되지 않는 것으로 판단하여 메모리에서 ..

[flutter] Get.lazyPut 활용

getPages: [ GetPage(name: '/', page: () => const App()), GetPage(name: '/home', page: () => const HomePage()), GetPage( name: '/login', page: () => const LoginPage(), binding: BindingsBuilder(() { Get.lazyPut(() => LoginController(Get.find())); }) ),]Get.lazyPut을 사용하는 이유는 특정 컨트롤러 인스턴스를 필요할 때만 생성하기 위해서입니다. 즉, 해당 페이지에 접근하는 순간에만 컨트롤러가 초기화되도록 합니다. 이는 애플리케이션의 리소스 사용을 최적화하고, 불필요한 ..