K8S, DDD, CQRS, ES, gRPC를 활용한 Go 서버/API 보일러플레이트

Go API 시작 키트 이 프로젝트는 K8S, DDD, CQRS, ES, gRPC와 같은 최신 기술 스택을 기반으로 한 Go 서버 및 API 개발을 위한 보일러플레이트를 제공합니다. 개발 및 프로덕션 환경을 위한 Kubernetes 구성을 포함하여, 프로덕션 환경과 유사한 환경에서 작업함으로써 구성 오류를 최소화합니다. 여러 서비스(예: 인증 또는 사용자 도메인)를 위한 단일 저장소(mono-repo ...

6월 18일 23:50에 게시됨

Go 서비스 등록 및 발견 시스템

아키텍처 흐름도 gRPC 서비스 발견 gRPC 리졸버 인터페이스 설계 // gRPC 리졸빌더 type Builder interface { Build(target Target, cc ClientConn, opts BuildOptions) (Resolver, error) Scheme() string } // gRPC 리졸버 type Resolver interface { ResolveNow(ResolveNowOptions) Close() } 메시지 전달 순서도 소스 코드 Gitee: https://gitee.com/luyue_zhang ...

6월 18일 16:48에 게시됨

Windows 환경에서 Go 언어 개발 환경 구축 및 VS Code 설정 가이드

1. Go 설치 공식 Go 다운로드 페이지에서 운영체제에 맞는 설치 파일을 다운로드하여 설치를 진행합니다. 기본 설치 경로는 C:\Go입니다. 2. 환경 변수 구성 두 개의 주요 환경 변수를 설정해야 합니다: GOROOT: Go 설치 디렉터리 (예: C:\Go) GOPATH: 작업 디렉터리 (예: D:\GoProjects) 또한 %GOROOT%\bin과 %GOPATH%\bin을 시스템 PATH 변수에 추가해야 합니다. ...

6월 18일 16:04에 게시됨

Go 언어: 맵, 문자열, 함수, 인터페이스 완벽 정리

1. 맵(Map) 심층 분석 Go의 맵은 키-값 쌍을 저장하는 해시 테이블 기반 자료구조입니다. 1.1 맵 초기화와 길이 package map_practice import "testing" func TestMapInit(t *testing.T) { // 리터럴을 사용한 초기화 scores := map[string]int{"Alice": 90, "Bob": 85} t.Log(scores["Alice"]) // 90 출력 // 빈 맵 생성 후 값 할당 data := map ...

6월 15일 20:15에 게시됨

Linux cgroups를 활용한 리소스 격리 기술 분석

cgroups 기반의 자원 제한 메커니즘 컨테이너 기술에서 핵심적인 역할을 하는 Control Groups (cgroups)는 리눅스 커널이 제공하는 자원 관리 시스템입니다. Docker는 이 기술을 기반으로 각 컨테이너에 대해 메모리, 프로세스, CPU 등 다양한 자원을 세밀하게 제어합니다. 기본 동작 원리 컨테이너 생성 시, Docker는 내부적으로 해당 컨테이너의 고유 ID를 이름으로 하 ...

6월 14일 00:59에 게시됨

여러 언어로 Hello World 출력하기

실행 환경: macOS IDE: VSCode + CodeRunner C hello_c.c #include <stdio.h> int main(void) { puts("안녕하세요, C입니다!"); return 0; } 실행 명령어 gcc hello_c.c -o hello_c && ./hello_c C++ hello_cpp.cpp #include <iostream> int main() { std::cout << "안녕하세요, C++입니다!" << std: ...

6월 14일 00:58에 게시됨

Go 언어 파일 입출력 정리: os, bufio, ioutil 패키지 완벽 가이드

Go에서 파일을 읽고 쓰는 방법은 크게 세 가지 패키지로 나눌 수 있다. 각 패키지의 특징과 사용법을 예제 코드와 함께 살펴보겠다. 1. os 패키지 가장 기본적인 파일 입출력 기능을 제공한다. 파일 쓰기: Write() / WriteString() package main import ( "fmt" "os" ) func main() { data := "# Todo List\r\n- 운동하기\r\n- 책 읽기\r\n- 코딩 연습" ...

6월 11일 18:58에 게시됨

Go 언어에서의 서식화 출력과 fmt 패키지 활용

서식 지정자 이해하기 Go는 다양한 데이터 타입을 출력할 때 사용할 수 있는 강력한 포맷팅 기능을 제공합니다. 이는 주로 fmt 패키지의 Printf 계열 함수와 함께 사용됩니다. 카테고리서식 코드설명 일반형%v값의 기본 형식으로 출력 %+v구조체 필드 이름 포함하여 출력 %#vGo 코드 형태로 값 표현 %T값의 타입 출력 %%퍼센트 기호(%) 자체를 출력 불리 ...

6월 8일 22:52에 게시됨

LangChainGo 실전 활용법: Ollama로 Llama3를 로컬에서 구동해 OpenAI 비용 없애기

최근 몇몇 독립 개발자들과 대화를 나누면서 공통적인 고민을 발견했습니다. 대규모 언어 모델(LLM)을 활용한 애플리케이션 개발을 원하지만, OpenAI의 API 비용이 부담스럽다는 점입니다. 호출할 때마다 비용을 계산해야 하고, 프로젝트가 조금만 커져도 청구서가 급증합니다. 더군다나 민감한 데이터를 처리해야 하는 상황에서는 데이터 보안이 큰 문제입니다. 비용을 통 ...

6월 8일 21:30에 게시됨

다중 작업 스케줄링 최적화: 최단 완료 시간 계산

문제 설명 공장은 m개의 생산 라인을 운영하며, n개의 독립적인 작업을 병렬 처리해야 합니다. 시스템은 항상 처리 시간이 가장 짧은 작업부터 우선 배치합니다. 각 작업의 처리 시간이 주어졌을 때, 모든 작업이 완료되는 총 소요 시간을 구하세요. 작업 수가 라인 수를 초과하면, 처음에 처리 시간이 짧은 m개의 작업이 라인에 할당되고, 이후 한 라인이 작업을 완료할 ...

6월 8일 19:40에 게시됨