정지용
기술스택 목록
언어

Go

프로젝트 1에서 사용했습니다. 각 프로젝트에서 어떤 역할로 썼는지 아래에 정리했습니다.

이 기술은 무엇인가요?

Google이 개발한 정적 타입, 컴파일 언어로 동시성과 단순함을 강조하는 범용 프로그래밍 언어

Go(또는 Golang)는 2009년 Google에서 공개한 오픈소스 프로그래밍 언어입니다. C 언어의 성능과 Python의 간결함을 결합하여, 대규모 서버 애플리케이션과 분산 시스템을 쉽게 만들 수 있도록 설계되었습니다. 빠른 컴파일 속도, 내장 동시성 모델(goroutine), 가비지 컬렉션, 간결한 문법을 특징으로 하며, 단일 바이너리로 배포할 수 있어 운영 환경에서의 편의성이 높습니다.

이럴 때 사용합니다

  • REST API, gRPC 서버 등 네트워크 서비스를 빠르게 구축하고 높은 동시성을 처리해야 할 때
  • Docker, Kubernetes처럼 단일 바이너리 배포가 중요한 CLI 도구나 인프라 소프트웨어를 만들 때
  • 팀 내 코드 스타일 통일과 빠른 온보딩이 중요하며, 언어 자체의 러닝 커브를 낮추고 싶을 때
  • 마이크로서비스 아키텍처에서 가볍고 빠르게 시작되는 서비스가 필요할 때

핵심 개념

goroutine
Go 런타임이 관리하는 경량 스레드로, 수천 개를 동시에 실행해도 적은 메모리만 사용합니다. 'go' 키워드로 함수 앞에 붙이기만 하면 비동기 실행됩니다.
channel
goroutine 간 안전하게 데이터를 주고받기 위한 통신 파이프입니다. 'make(chan Type)' 으로 생성하며, <- 연산자로 송수신합니다.
interface
메서드 집합을 정의하는 타입으로, 명시적 선언 없이 구조체가 해당 메서드를 구현하면 자동으로 인터페이스를 만족합니다(덕 타이핑).
package
코드를 구성하는 기본 단위로, 같은 디렉터리 안의 .go 파일들이 하나의 패키지를 이룹니다. main 패키지는 실행 가능한 프로그램의 진입점입니다.
defer
함수가 종료될 때 실행될 코드를 예약하는 키워드입니다. 파일 닫기, 락 해제 등 정리 작업을 보장하는 데 자주 쓰입니다.
error
Go는 예외(exception) 대신 error 타입을 반환값으로 사용합니다. 함수 호출 후 반환된 error가 nil인지 검사하는 패턴이 일반적입니다.

간단한 HTTP 서버와 goroutine

포트 8080에서 HTTP 요청을 받아 응답하며, 각 요청마다 goroutine을 생성해 비동기로 로그를 남기는 예시입니다.

Go
package main

import (
	"fmt"
	"net/http"
	"time"
)

func main() {
	http.HandleFunc("/", handler)
	fmt.Println("Server running on :8080")
	http.ListenAndServe(":8080", nil)
}

func handler(w http.ResponseWriter, r *http.Request) {
	// goroutine으로 비동기 작업 실행
	go logRequest(r.URL.Path)
	fmt.Fprintf(w, "Hello, Go!")
}

func logRequest(path string) {
	time.Sleep(100 * time.Millisecond)
	fmt.Println("Logged:", path)
}

처음 쓸 때 흔한 함정

  • nil 포인터, 닫힌 채널 접근 등은 panic을 일으키므로, 방어 코드나 recover()가 필요할 수 있습니다.
  • for 루프 안에서 goroutine을 생성할 때 반복 변수를 캡처하면 의도와 다른 값이 사용될 수 있습니다.
  • 채널을 닫지 않거나, 이미 닫힌 채널에 쓰기를 시도하면 런타임 에러가 발생합니다.

위 개요는 기술 학습을 돕기 위해 자동 생성된 일반 설명입니다. 정확한 사양과 최신 정보는 공식 문서를 확인하세요.

프로젝트별 활용 방식

위 개념이 실제 프로젝트에서 어떻게 쓰였는지 보여줍니다.

  1. 01백엔드
    2026년 7월

    KYB 기업심사 REST API

    Go + Echo 기반 멀티테넌트 KYB(Know Your Business) 심사 플랫폼. 기업 등록부터 3단계 심사, WLF 스크리닝, 재제출 워크플로까지 지원.

    이 프로젝트에서의 Go 활용

    메인 백엔드 언어 (Go 1.26.1)

함께 사용한 기술

위 프로젝트들에서 같이 쓰인 다른 기술입니다.