30.3. 프로그램언어 고(Go)의 Continuous Integration (CI) 구축 방법

프로그램언어 고(Go)의 Jenkins 활용 방법 고(Go)언어에서 Jenkins를 활용하는 방법은 다음과 같습니다. package main import “fmt” func main() { // Jenkins 서버 주소 설정 jenkinsUrl := “http://jenkinsserver:8080” // Jenkins에 접속하기 위한 크리덴셜 설정 username := “testuser” password := “testpassword” // Jenkins Job 실행을 위한 설정 jobName := “test-job” // Jenkins API를 호출하기 위한 클라이언트 설정 jenkins … Read more

30.2. 프로그램언어 고(Go)의 Unit testing 방법

프로그램언어 고(Go)에서의 테스트케이스 작성방법 Go언어에서 테스트 케이스를 작성하는 방법은 다음과 같습니다. package calculator import “testing” func TestAdd(t *testing.T) { // 입력값과 예상 출력값 정의 x := 1 y := 2 expected := 3 // 실제 계산하고 출력값 가져오기 result := Add(x, y) // 예상 출력값과 실제 출력값 비교 if result != expected { t.Errorf(“Add(%d, %d) … Read more

30.1. 프로그램언어 고(Go)의 Docker를 활용한 배포 방법

프로그램언어 고(Go)의 Dockerfile 작성법 Go언어로 작성된 애플리케이션을 Docker 이미지로 빌드하려면 Dockerfile이 필요합니다. Go언어 Dockerfile 작성법에 대해 설명드리겠습니다. # 고(Go) 버전 정의 FROM golang:1.17-alpine # 작업 디렉토리 설정 WORKDIR /app # 의존성 설치를 위한 파일 복사 COPY go.* ./ # 의존성 설치 RUN go mod download # 소스 복사 COPY . . # 빌드 실행 RUN … Read more

29.3. 프로그램언어 고(Go)의 I/O 처리 최적화 방법

프로그램언어 고(Go)에서의 비동기 I/O 처리 방식 Go언어에서는 고루틴(goroutine)과 채널(channel)을 사용하여 비동기 I/O를 처리합니다. 고루틴은 Go언어의 가볍고 효율적인 스레드입니다. 부하가 많은 작업을 고루틴으로 만들면 마치 병렬처리되는 것처럼 동작합니다. func longComputation() { // 시간이 오래 걸리는 연산 } func main() { go longComputation() // 고루틴에서 실행 fmt.Println(“다음 작업”) } 위 예제에서 longComputation 함수를 고루틴으로 실행했기 때문에 메인 … Read more

29.2. 프로그램언어 고(Go)의 CPU 이용 최적화 방법

프로그램언어 고(Go)에서의 고루틴 사용으로 멀티스레딩 최적화 하기 Go 언어에서 고루틴(goroutine)을 사용하면 멀티스레딩을 최적화할 수 있습니다. 고루틴은 Go 언어의 가볍고 효율적인 스레드입니다. package main import ( “fmt” “time” ) func process(no int) { for i := 0; i < 10; i++ { fmt.Println(no, ":", i) time.Sleep(time.Millisecond * 500) } } func main() { // 고루틴 실행 ... Read more

29.1. 프로그램언어 고(Go)의 메모리 관리 방법

프로그램언어 고(Go)의 가비지 컬렉션 작동 방식 프로그램언어 고(Go)의 가비지 컬렉션은 메모리 관리 기법 중 하나로, 사용하지 않는 메모리를 자동으로 해제하고 회수하는 기능을 말합니다. package main import “fmt” func main() { // 1. 변수 선언 var a int a = 10 // 2. 변수 사용 fmt.Println(a) // 3. 변수 범위를 벗어나 값을 사용하지 않음 // => … Read more

28.3. 프로그램언어 고(Go)의 뮤텍스(Mutex) 활용법

프로그램언어 고(Go)에서의 뮤텍스 기본 사용법 제가 고(Go)언어에서 뮤텍스의 기본 사용법에 대해 설명 드리겠습니다. package main import ( “fmt” “sync” ) var count int var mutex sync.Mutex func main() { var wg sync.WaitGroup for i := 0; i < 1000; i++ { wg.Add(1) go func() { mutex.Lock() count++ mutex.Unlock() wg.Done() }() } wg.Wait() fmt.Println(count) } 위의 ... Read more

28.1. 프로그램언어 고(Go)의 고루틴(Goroutines) 활용법

프로그램언어 고(Go)에서의 기본 고루틴 사용법 고(Go)언어에서 고루틴(goroutine)은 가벼운 스레드와 비슷한 개념입니다. 고루틴을 사용하면 병렬 처리가 가능한 코드를 쉽고 효율적으로 작성할 수 있습니다. package main import ( “fmt” “time” ) func say(s string) { for i := 0; i < 5; i++ { time.Sleep(100 * time.Millisecond) fmt.Println(s) } } func main() { go say("world") // 고루틴 ... Read more

27.3. 프로그램언어 고(Go)의 API 보안 준수 방법

프로그램언어 고(Go)에서의 HTTPS 사용 방법 고(Go)언어에서 HTTPS를 사용하는 방법에 대해 설명드리겠습니다. HTTPS는 HTTP에 SSL/TLS 기술을 적용하여 데이터를 암호화하여 전송하는 보안이 강화된 HTTP 프로토콜입니다. 고(Go)언어에서도 기본 http 패키지를 사용하여 손쉽게 HTTPS를 사용할 수 있습니다. import ( “crypto/tls” “net/http” ) func main() { // TLS 설정 tlsConfig := &tls.Config{ MinVersion: tls.VersionTLS12, CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256}, PreferServerCipherSuites: true, … Read more