golang(18)
-
MSA(Microservices Architecture) 이해하기: HTTP와 gRPC를 통한 통신 방식
현대 소프트웨어 개발에서는 시스템을 작은 서비스 단위로 나누는 MSA(Microservices Architecture)가 점점 더 인기를 끌고 있습니다. 이를 통해 개발팀은 독립적으로 배포 가능한 서비스들을 구축하고, 각각의 서비스가 독립적으로 발전할 수 있게 합니다. 이번 포스팅에서는 MSA의 통신 방식, HTTP와 gRPC에 대해 살펴보고, 코드 레벨에서 어떻게 구현되는지에 대해 설명하겠습니다. 또한, 모놀리식 아키텍처와 비교하여 MSA의 장점도 살펴보겠습니다.모놀리식 vs MSA모놀리식 아키텍처는 애플리케이션의 모든 기능이 하나의 큰 코드베이스에 통합된 형태입니다. 이 방식은 초기 개발 및 관리가 비교적 단순하다는 장점이 있지만, 프로젝트가 커질수록 유지보수와 배포에서 문제점이 발생할 수 있습니다...
2024.11.18 -
eBPF를 활용한 서버 애플리케이션과 인프라 연관 관계 파악하기
eBPF(Extended Berkeley Packet Filter)는 리눅스 커널에 새로운 가능성을 열어주는 강력한 기술입니다. 기존에는 커널 레벨의 데이터를 수집하거나 분석하려면 커널 모듈을 직접 수정하거나 디버깅을 해야 했지만, eBPF는 이러한 작업을 비교적 안전하고 쉽게 수행할 수 있게 해줍니다. 오늘은 eBPF를 이용해 서버에서 실행되는 애플리케이션과 서버 로드밸런서 등 다양한 인프라 레벨의 연관 관계를 개발하는 방법을 소개하겠습니다.eBPF란 무엇인가요?eBPF는 리눅스 커널의 특정 이벤트에 커스텀 코드를 실행할 수 있는 기능을 제공합니다. 이 기능을 통해 애플리케이션의 트래픽을 실시간으로 추적하거나, 커널 레벨에서 발생하는 다양한 이벤트들을 관찰하고 분석할 수 있습니다. 즉, 애플리케이션, ..
2024.11.16 -
Go 언어의 특징과 사용 방법
Go 언어, 흔히 고(Golang)라고 불리는 이 언어는 2007년에 Google에서 개발을 시작해 2009년에 오픈 소스로 공개된 언어입니다. 고는 간결하고 명료한 문법과 함께 높은 성능과 병행성을 제공하는 것이 큰 특징입니다. 이번 포스팅에서는 고 언어의 특징과 그것을 코드레벨에서 어떻게 활용할 수 있는지 구체적으로 알아보겠습니다.1. 간결하고 명료한 문법Go의 가장 큰 장점 중 하나는 간결함입니다. 복잡한 구조보다는 직관적인 코드 작성을 지향하기 때문에 개발자가 쉽게 익히고 빠르게 작업할 수 있습니다. 아래는 간단한 "Hello, World!" 예제입니다.package mainimport "fmt"func main() { fmt.Println("Hello, World!")}여기서 import ..
2024.11.11 -
Understanding Lock-Free Queues with Code Examples
Sharing data in a multithreading environment can be very challenging. The most common way to protect shared resources is by using locks, but locks can lead to performance degradation and even deadlock issues. To address these problems, one solution is the concept of lock-free data structures. In this blog post, we'll explore what a lock-free queue is and provide code examples to understand how i..
2024.11.04 -
락 프리 큐(Lock-Free Queue)에 대한 이해와 예제 코드
멀티스레딩 환경에서의 데이터 공유는 매우 도전적인 문제 중 하나입니다. 락을 사용해 공유 자원을 보호하는 것은 가장 일반적인 방법이지만, 락을 사용하면 성능 저하와 데드락 같은 문제에 부딪힐 수 있습니다. 이러한 문제를 해결하기 위해 등장한 개념 중 하나가 바로 락 프리(Lock-Free) 자료구조입니다. 이번 포스팅에서는 락 프리 큐(Lock-Free Queue)의 개념을 이해하고, 코드 예제를 통해 어떻게 동작하는지 알아보겠습니다.락 프리 자료구조란?락 프리 자료구조는 스레드 간의 동시 접근이 발생해도 락을 사용하지 않고 안전하게 데이터를 관리할 수 있는 구조를 말합니다. 락 프리 자료구조의 주요 목표는 성능 향상입니다. 이를 위해 락 대신 원자적 연산(Atomic Operation)을 사용하여 데이..
2024.11.04 -
오픈소스를 이용한 다중 k8s 클러스터 환경의 Node/POD 리소스 사용량과 로그 모니터링
k8s(쿠버네티스) 클러스터를 운영하다보면 Observability(관측 가능성)를 제외하고는 사실상 정상적인 운영이 어렵습니다. 그만큼 쿠버네티스는 배포의 복잡성, 고가용성, 안정성 등 컨테이너 오케스트레이션 측면에서의 강력한 장점이 있지만, 운영의 측면에서는 러닝 커브가 높고 가시적이지 않다는 단점이 있습니다. 이러한 문제를 대변하듯, 쿠버네티스의 모니터링 분야는 빠르게 발전하고 있는 것을 볼 수 있는데요. 오늘은 오픈소스를 이용해 다중 k8s 클러스터 환경에서 Node와 POD를 모니터링할 수 있는 모니터링 시스템을 구성해보겠습니다. Clymene-project(https://github.com/Clymene-project/Clymene) Clymene 프로젝트는 Metric과 Log를 수집하는 a..
2022.08.17