Back-End
-
golang: godoc 철학과 사용방법Back-End/Golang 2024. 11. 18. 22:27
Go 언어는 문서화를 매우 중요하게 생각합니다. 좋은 문서는 소프트웨어를 더 접근 가능하고 유지보수하기 쉽게 만들어줍니다. 이를 위해 Go는 코드와 문서를 밀접하게 연계시키는 도구인 godoc을 제공합니다. 이번 글에서는 godoc의 철학과 사용 방법, 그리고 예시를 통해 godoc에 대해 자세히 알아보겠습니다.godoc의 철학godoc의 핵심 철학은 문서는 코드와 함께 발전해야 한다는 것입니다. 이를 위해 godoc은 Go 소스 코드와 그 주석을 파싱하여 HTML이나 텍스트 형식의 문서를 생성합니다. 이러한 접근 방식은 다음과 같은 장점을 제공합니다:코드와 문서의 일치성: 문서가 코드와 동일한 저장소에 있기 때문에, 코드 변경 시 문서도 함께 업데이트됩니다.간단한 주석 규칙: 특별한 문법이나 마크업 없..
-
golang: 고언어의 철학(Clear is better than clever)Back-End/Golang 2024. 11. 16. 22:17
"Clear is better than clever"("명확성은 영리함보다 우수하다)는 Go 언어의 설계 철학 중 하나로, 코드의 가독성과 명확성을 우선시해야 한다는 원칙을 뜻합니다. 이는 Go 언어 설계자들이 Go 언어의 단순하고 직관적인 사용성을 강조하면서, 복잡하거나 지나치게 "영리한" 코드 작성을 피하자는 철학입니다.세부 설명Clear (명확성):코드를 읽는 사람이 쉽게 이해할 수 있는 코드를 작성하는 것을 지향합니다.코드가 직관적이어야 팀원이나 후임자가 코드를 읽고 수정하거나 유지보수하기 쉽습니다."이 코드는 무엇을 하는지 바로 알 수 있는가?"를 기준으로 작성.Clever (영리함):지나치게 복잡하거나 고도의 기술적인 구현(트릭)을 사용한 코드.한 번에 많은 일을 처리하거나, 너무 축약된 표현..
-
golang: 제네릭(Generic) 심화과정Back-End/Golang 2024. 11. 10. 13:04
Go 언어의 제네릭(Generic) 심화 이해 및 활용Go 언어는 간결함과 효율성으로 널리 사랑받는 언어입니다. 그러나 제네릭(generic)이 없다는 점은 복잡한 코드를 작성할 때 걸림돌이 되었습니다. 이러한 필요성에 따라 Go 1.18 버전부터 제네릭이 도입되었고, 이는 코드 재사용성과 타입 안전성을 크게 향상시켰습니다. 이번 글에서는 제네릭이 무엇인지부터 시작하여, 왜 필요한지, 그리고 현업에서 어떻게 활용되는지 다양한 예시와 함께 깊이 있게 알아보겠습니다.1. 제네릭이란 무엇인가?1.1 제네릭의 개념제네릭은 함수나 타입을 정의할 때 타입을 매개변수처럼 사용할 수 있게 하는 기능입니다. 즉, 코드 작성 시 구체적인 타입을 명시하지 않고도 다양한 타입에 대해 동작하는 코드를 작성할 수 있습니다.1.2..
-
사용자 기반을 이해하는 핵심 지표: 사용자 활동 관련 용어 정리Back-End/Performance & Optimization 2024. 11. 3. 18:30
서비스나 앱의 성공 여부를 평가하는 데 있어 사용자 수는 단연 중요한 기준입니다. 하지만 단순한 사용자 수보다는 이들이 얼마나 자주, 활발하게 사용하고 있는지를 나타내는 지표가 더욱 유용할 수 있습니다. 여기서 등장하는 것이 MAU (Monthly Active Users)와 관련된 지표들입니다. MAU는 한 달 동안 서비스를 얼마나 많은 사용자가 이용했는지 보여주며, 이 외에도 DAU, 유지율 등 다양한 사용자 활동 지표가 함께 활용됩니다. 이번 글에서는 MAU와 관련된 주요 용어들을 하나씩 정리해보겠습니다.1. MAU (Monthly Active Users): 한 달간의 활성 사용자 수MAU는 월간 활성 사용자 수를 나타내며, 서비스의 인기도와 사용자 기반을 평가하는 데 필수적인 지표입니다. 한 달 동..
-
웹 서비스 성능을 이해하는 필수 지표: 트래픽 관련 용어 정리Back-End/Performance & Optimization 2024. 11. 3. 18:28
웹 서비스의 성공은 단순히 기능의 제공에 그치지 않고, 많은 사용자에게 안정적이고 빠른 서비스를 제공하는 능력에 달려 있습니다. 이 과정에서 '트래픽 지표'는 중요한 역할을 합니다. 웹 성능 지표로 자주 언급되는 TPS (Transactions Per Second) 외에도 QPS, RPS, Latency 등 다양한 트래픽 용어들이 있는데요, 각각이 어떤 의미를 가지며 어떻게 활용되는지 하나씩 살펴보겠습니다.1. TPS (Transactions Per Second): 트랜잭션 처리 능력TPS는 서비스가 초당 몇 개의 트랜잭션을 처리할 수 있는지를 나타내는 지표로, 시스템 성능을 평가하는 중요한 기준입니다. 예를 들어, 결제 시스템이나 금융 서비스는 실시간 트랜잭션을 안정적으로 처리해야 하므로 TPS가 매우..
-
golang: 배열, 슬라이스, 맵Back-End/Golang 2024. 10. 27. 10:13
1. 배열 (Arrays)정적 크기: 배열은 생성 시 크기가 고정되며, 한 번 설정하면 변경할 수 없습니다.동일 타입 요소: 모든 요소는 같은 타입이어야 합니다.메모리 연속성: 배열은 메모리에 연속적으로 저장되므로 특정 인덱스에 빠르게 접근할 수 있습니다.var arr [5]int // 길이가 5인 int 배열, 모든 요소는 0으로 초기화arr[0] = 1 // 배열의 첫 번째 요소에 값 할당arr2 := [3]string{"Go", "is", "fun"} // 리터럴을 사용해 초기화 가능for i, v := range arr2 { fmt.Printf("index: %d, value: %s\n", i, v)} 실전 예시pa..
-
golang: 그레이스풀 셧다운(Graceful Shutdown)Back-End/Golang 2024. 10. 25. 14:40
그레이스풀 셧다운의 개념 그레이스풀 셧다운은 서버가 종료 요청을 받았을 때, 즉시 모든 연결을 끊지 않고 현재 처리 중인 요청들을 완료한 후 안전하게 종료하는 방식입니다. 이렇게 하면 클라이언트 요청이 비정상적으로 끊기는 것을 방지할 수 있고, 데이터 손실이나 요청 실패를 줄일 수 있습니다. 일반적으로, 서버가 종료할 때 남은 작업을 완료하기 위한 시간 제한(타임아웃)을 설정하여 요청이 무기한 지속되는 것을 방지합니다.Golang에서 그레이스풀 셧다운 Golang의 경우, net/http 패키지를 통해 웹 서버를 간단하게 실행하고 그레이스풀 셧다운을 구현할 수 있습니다. Golang의 비동기 특성과 context 패키지는 이러한 셧다운을 쉽게 처리할 수 있게 해줍니다.Golang 그레이스풀 셧다운 예시p..
-
golang: Gin vs ChiBack-End/Golang 2024. 10. 17. 21:58
제가 Golang으로 웹 애플리케이션을 개발할 때 대표적으로 선택한 두 가지 프레임워크는 Gin과 Chi입니다. 이 글에서는 두 프레임워크를 다양한 측면에서 비교하여 각 프레임워크의 장단점을 심도 있게 살펴보고, 어떤 상황에서 어떤 프레임워크가 더 적합한지 알아보겠습니다.1. 성능Gin과 Chi 모두 경량 프레임워크로 높은 성능을 제공합니다. 하지만 일부 최적화 방법과 설계 철학이 다릅니다.Gin의 성능Gin은 컴파일된 정규 표현식과 트리 라우팅을 통해 요청을 빠르게 처리합니다.JSON 직렬화/역직렬화 작업에 최적화된 기능을 포함하여 빠른 성능을 발휘합니다.요청 처리 속도는 초당 수천 개의 요청을 처리할 수 있을 정도로 뛰어납니다.Chi의 성능Chi는 Go 표준 라이브러리의 net/http 위에 구축되어..