전체 글31 REST API와 gRPC 비교: Go로 gRPC 서버 구현하며 이해하기 gRPC란gRPC(Google Remote Procedure Call)는 Google이 개발한 오픈 소스 고성능 RPC 프레임워크로, 클라이언트와 서버 간의 효율적인 통신을 위해 HTTP/2와 Protocol Buffers를 사용하며, 다양한 언어에서 실행 가능합니다. 마치 로컬 함수를 호출하듯 원격 서버의 함수를 호출할 수 있게 해주어, 마이크로 서비스 아키텍처나 복잡한 분산 시스템에서 API 통신 방식으로 널리 사용됩니다. REST API와 gRPC를 비교해보고, Go로 간단한 gRPC 서버를 구현해봅니다.REST API vs. gRPC구분REST APIgRPC기반HTTPHTTP/2리소스 중심OXMethod 의미HTTP MethodRPC MethodURL중요거의 중요하지 않음계약느슨함proto로 .. 2025. 12. 26. Go 언어로 Gemini와 대화하기 : API 연동 실험기 Gemini CLI를 잘 사용하고 있는 요즘, Go 어플리케이션에서 Gemini와 대화하기 위한 API 연동 테스트를 해보려 합니다.(Go를 사용한 이유는 그냥 익숙하기 땜에) 아래 순서로 API 연동을 시작해봅시다Google AI Studio와 Go SDK로 시작하기Gemini와 대화하기이미지, 비디오와 같은 MultiModal 처리하기 튜토리얼은 아래 유튜브 영상을 참고하여 Python 대신 Go SDK를 적용해보았습니다.https://www.youtube.com/watch?v=qfWpPEgea2A Google AI Studio와 Go SDK로 시작하기 Gemini API 문서는 아래를 참고합니다. 각 AI Model 별 기능과 API 명세를 확인할 수 있습니다.https://ai.google.dev.. 2025. 10. 15. 도메인 주도 설계 첫걸음 위키북스, 블라드 코노노프 지음 도메인 주도 설계 (DDD: Domain-Driven Design) : 비즈니스 도메인을 깊이 이해하고 이를 바탕으로 소프트웨어를 설계하는 것을 목표로 하는 소프트웨어 개발 방법론목차 Part1. 전략적 설계기업의 비즈니스 전략 분석하위 도메인유비쿼터스 언어바운디드 컨텍스트바운디드 컨텍스트 연동협력형 패턴 그룹사용자-제공자 패턴 그룹분리형 노선Part2. 전술적 설계트랜잭션 스크립트액티브 레코드도메인 모델밸류 오브젝트엔티티에그리게이트시간 차원의 모델링이벤트 소싱아키텍처 패턴커뮤니케이션 패턴에그리게이트 연동아웃박스사가프로세스 관리자 Part1. 전략적 설계기업의 비즈니스 전략 분석하위 도메인비즈니스 도메인은 기업의 주요 활동 영역을 정의한다. 일반적으로 회사가 고객에게 제공.. 2025. 5. 1. Go pprof를 사용한 어플리케이션 OOM 이슈 분석기 이슈 발생 Go 어플리케이션 중 하나가 갑자기 Out Of Memory가 발생하여 서비스가 죽고 CPU 사용량도 max를 치면서 서버에 hang이 걸려 서버 접속도 하지 못하는 이슈가 발생했다. 서버와 어플리케이션을 모두 재시작했으나 동일한 이슈가 반복되어 일단은 4C/16GB 인스턴스로 scale-up 하여 임시방편으로 문제를 해결하고 원인을 파악하고자 했다. (기존 인스턴스 스펙 : 2C/8G) 빈번하게 배포하는 상용 서비스가 아니었고 만약 memory leak이었다면 재시작했을 때는 문제가 없었어야 하므로, 실행중이던 작업에 문제가 있다고 판단하여 go pprof를 사용해 프로파일링을 진행하기로 했다. 해당 서비스는 미디어 파일을 CDN에 업로드 하는 기능과 이미지 파일을 분석한 후 CDN에 .. 2025. 4. 11. Git command 정리 Branching and Mergingfast-forward mergeno-ffthree-way mergeconflict 해결StashingstashRebasingrebasecherry-pick변경사항 취소하기checkoutrestoreresetrevertreflogFetching and PullingfetchpullGit 협업 워크플로우forkclonefast-forward mergemaster에서 분기한 feature 브랜치에서 X, Y 커밋이 생성되고, master 브랜치에서는 분기된 시점 이후로 더 이상 추가적인 수정 사항이 없는 경우입니다. feature의 커밋을 master 브랜치에 merge 하고자 하는 경우 fast-forward merge를 사용할 수 있습니다.$ git switch ma.. 2023. 2. 26. Go Cron - robfig/cron/v3 https://github.com/robfig/cron GitHub - robfig/cron: a cron library for go a cron library for go. Contribute to robfig/cron development by creating an account on GitHub. github.com Cron 오픈소스 라이브러리를 사용하여 특정 시간마다 동작하는 기능을 구현한다. Download go get github.com/robfig/cron/v3@v3.0.0 Import import "github.com/robfig/cron/v3" 사용법 사용법은 간단하다. 내가 사용하고자 하는 시간 스케줄링과 기능을 설정해주고 Start 해주면 된다. func main() { c := cr.. 2023. 1. 28. 이전 1 2 3 4 ··· 6 다음