고루틴 - 고루틴은 동시성(Concurrency)을 지원한다. 즉, 코어에서 특정 작업을 수행 중에 멈추고 다른 작업을 수행할 수 있다. - 또한 여러 코어에서 동시에 여러 작업들을 수행하는 병렬성(Parallelism)도 지원한다. - Concurrency 기반으로 실행될지, Parallelism 기반으로 실행될지는 Go 및 OS 내부적으로 처리되기 때문에 개발자가 직접 관여하지 않아도 된다. - 고루틴이란 Go에서 동시에 실행되는 작업들을 의미한다. 다른 언어에서의 쓰레드와 비슷한 개념이지만 다른 언어의 쓰레드보다 메모리를 더 적게 사용하여 성능상 이점이 있다고 한다. - 고루틴은 사용하기에 쉽다. 함수 또는 메소드 호출 시 앞에 go 키워드만 붙여주면 된다. - 모든 Go 프로세스의 main 함수는..
기존 yaml 방식의 '선언적 프로그래밍' 장단점 - k8s manifest, Helm chart, kustomize 등 장점 - 사람이 읽기 쉬움 - 어디서든 사용가능 - 선언적 프로그래밍 형태 - 원하는 상태(Desired state)로 배포 가능 - static 한 파일 명세 단점 - 복잡성에 따라, 다수 환경일 경우 중복 부분 처리 필요(Helm chart, kustomize 등) - 즉, 공통부분에 대한 관리의 어려움이 있으며 별도 툴에 대한 학습 필요 개발자의 요구사항 yaml 방식의 선언적 프로그래밍 방식을 통해 쿠버네티스에 자원을 할당하고 관리하는 방식은 개발자에게 익숙하지 않았다. 즉, 개발자 친화적인 프로그래밍 언어(Go, Java, Python 등), 프레임워크, CLI 등의 형태를 ..
배열 import ( "fmt" "time" ) func main() { var arr [5]string arr[0] = "el1" arr[1] = "el2" fmt.Println(arr[0]) // el1 fmt.Println(arr) // [el1 el2 ] var dates [3]time.Time dates[0] = time.Unix(1257894000, 0) fmt.Println(dates[0]) nums := [3]int{3, 9} fmt.Println(nums) // [3 9 0] fmt.Println(len(nums)) // 3 } - 고정 길이를 가지기 때문에 선언 시 크기를 할당해야 함 - 변수와 마찬가지로 := 키워드를 통해 선언 및 초기화를 하고 초기화값은 {}로 묶는다. (자바와 비..
함수 1. 기본 구조 func AplusB(a int, b int) int { return a + b } func PrintAplusB(a int, b int) { fmt.Print(a + b) } - 다른 언어와 다르게 타입의 위치만 반대로 된 형태이다. 2. 다중 반환 함수 func AcalB(a int, b int) (int, int, int) { return a + b, a - b, a * b } func main() { puls, minus, multi := AcalB(1032, 3124) fmt.Print(puls, minus, multi)// 4156 -2092 3223968 } - 반환 값이 2개 이상일 경우엔 return type을 괄호로 묶는 것은 필수이다. func AcalB(a in..
Golang의 대표적인 특징 5가지 - 컴파일 언어 - 간결한 코드 - 미사용 메모리 자동 해제(GC) - 편리한 동시성 코드 작성 - 멀티코어 프로세서 지원 package go파일은 자바와 마찬가지로 패키지로 시작한다. 모든 Go 파일은 반드시 하나의 package를 포함해야 한다. main 패키지는 특수한 패키지로 간주된다. main 패키지는 프로그램이 시작하는 코드가 포함된 패키지를 의미한다. 대부분 다른 언어와 마찬가지로 import를 통해 다른 패키지를 가져올 수 있다. 이때 모든 패키지를 한 번에 다 가져오면 프로그램이 커지고 느려지기 때문에 필요한 패키지만 가져와야 한다. (실제 import 한 패키지는 컴파일 타임에 가져온다.) 자바와 다르게 go에서 import 해 온 함수를 사용할 때에..
Go의 철학 1. 큰 프로젝트에서도 사용될 수 있는 안정성 2. 빠른 속도 3. 요즘 인기 있는 Python, Javascript과 같은 가독성 4. 네트워크, 멀티프로세싱에 최적화 cf. 2012년 3월에 Go 1.0 공개했으며 현재(2022년 8월) 최신 버전은 1.19이다. Golang은 C계열 언어로 분류되며 객체지향 언어는 아니지만 객체지향스럽게 프로그래밍 가능하다고 한다.(상속을 지원하지 않지만 객체지향처럼 코딩 가능) Go는 UNIX, C언어, B언어, UTF8, JVM과 같은 프로젝트에 참여한, 꽤 영향력이 큰 개발자들이 만든 언어이다. Golang의 장단점 1. 장점 1. 빠른 속도 Go는 컴파일 기반 언어여서 실행 자체 시점만 비교했을 때, 인터프리터 기반인 언어보다 빠르다. 컴파일 언..
- Total
- Today
- Yesterday
- RDB
- argocd
- docker
- Java
- GitOps
- 카프카
- Linux
- Non-Blocking
- Stream
- 쿠버네티스
- CICD
- db
- K8s
- 우분투
- spring
- github actions
- go
- jvm
- kafka
- ubuntu
- Kubernetes
- 컨트롤러
- 코틀린
- ci/cd
- Controller
- container
- Kotlin
- LFCS
- golang
- rolling update
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |