Study 9

[스터디] Tucker의 Go 언어 프로그래밍 내용정리 24~26장

24장. 고루틴과 동시성 프로그래밍 24.1 스레드란? 고루틴 : 경량 스레드, 함수나 명령을 동시에 실행할 때 사용 24.1.1 컨텍스트 스위칭 비용 컨텍스트 스위칭 비용 : CPU 코어가 여러 스레드를 전환하면서 수행할 경우 드는 비용 스레드 컨텍스트 : 스레드 전환시 현 상태를 보관하는데, 스레드의 명령 포인터 intstruction pointer, 스택 메모리등 코어 개수의 두 배 이상 스레드를 만들면 스위칭 비용이 많이 발생 GO 언어는 CPU 코어마다 OS 스레드를 하나만 할당해서 사용하기에 컨텍스트 스위칭 비용이 발생하지 않는다. 24.2 고루틴 사용 모든 프로그램은 고루틴을 최소 하나는 가지는데 이것이 메인루틴이다. 메인루틴인 고루틴은 main()함수와 함께 시작되고 종료된다. 고루틴 추가..

Study 2023.12.12

[스터디] Tucker의 Go 언어 프로그래밍 내용정리 21~23장

21장 함수 고급편 21.1 가변 인수 함수 인수 개수 가 정해져 있지 않은 함수 fmt.Println(1, 2, 3, 4, 5, 6..) // 인수가 많을 수 있다. 21.1.1 … 키워드 사용 … 키워드를 사용해서 가변 인수를 처리할 수 있다. 인수 타입 앞에 …를 붙여서 해당 타입 인수를 여러 개 받는 가변인수 라는 걸 표시하면 된다. package main import "fmt" func sum(nums ...int) int { // 가변 인수를 받는 함수 sum := 0 fmt.Printf("nums 타입 : %T\\n", nums) // nums 타입 출력 for _, v := range nums { sum += v } return sum } func main() { fmt.Println(su..

Study 2023.12.03

[스터디] Tucker의 Go 언어 프로그래밍 내용정리 18~20장

18장. 슬라이스 18.1 슬라이스 18.1.1 슬라이스 선언 일반적인 배열은 처음 정한 길이에서 늘어나지 않는다. var array [10]int 위에서 10개 보다 많이 저장하려면 더 큰 배열을 만들어서 값을 하나씩 복사해야 한다. 슬라이스의 선언 방법 초기화 하지 않으면 길이가 0인 슬라이스가 만들어지고, 슬라이스길이를 초과하면 런타임에러가 발생 var slice []int // 배열의 개술를 적지 않는다. 할당되지 않은 메모리 공간에 접근해서 프로그램이 비정상 종료되는 패닉이 발생한다. package main import "fmt" func main() { var slice []int if len(slice) == 0 { // slice 길이가 0인지 확인 fmt.Println("slice is ..

Study 2023.11.24

[스터디] Tucker의 Go 언어 프로그래밍 내용정리 14~17장

14장 포인터 14.1 포인터란? 포인터는 메모리 주소를 값으로 갖는 타입이다. int타입 변수 a가 있을 때 a는 메모리에 저장되어 있고 속성으로 메모리 주소를 갖고 있다. 변수 a의 주소가 0x0100번지라면 메모리 주솟값도 숫자값이기 때문에 다른 변수의 값으로 사용될 수 있다. 이런 메모리 주솟값을 변숫값으로 가질 수 있는 변수를 포인터 변수 라고 한다. 그림에서 int 타입 변수 a의 메모리 주소는 0x0100 번지이고, 값으로 3을 갖는다. p = &a 이렇게 포인터 변수 p에 a의 주소를 대입할 수 있다. 포인텨 변수 p의 값은 변수 a의 주소인 0x0100이 되고, 이것을 “포인터 변수 p가 변수 a를 가리킨다” 고 한다. 메모리 주소를 값으로 가져 메모리 공간을 가리키는 타입을 포인터 라고..

Study 2023.11.18

[스터디] PKOS 스터디 1주차 Kops 개념 및 실습

CloudNeta Kubernetes 스터디 시작 3월부터 가시다님의 CloudNeta Kubernetes 스터디에 합류했다. 이에 각 주차별 학습 내용을 정리해야 한다. 1주차의 내용은 KOPS를 사용한 K8S 환경 구축이다. KOPS란 무엇인가? Kubernetes KOPS는 Cloud 환경에서 Kubernetes 클러스터를 쉽게 배포, 관리 및 업그레이드할 수 있는 오픈소스 도구이다. KOPS는 클러스터를 생성, 업데이트 및 삭제하는 프로세스를 자동화한다. AWS, GCP 같은 CSP사의 환경에서 사용할 수 있다는데, Kops 깃허브에 가보면 DigitalOcean, Hetzner, OpenStack은 베타 지원, Azure는 알파 지원 중이라고 한다. KOPS는 클라우드에 Kubernetes 클러..

Study 2023.03.11

[스터디] Terraform module을 이용한 여러 EKS 배포

CloudNet팀에서 진행하고 있던 Terraform study T101이 끝날 시간이 다가왔다. CloudNet팀의 스터디는 중간과 기말과제로 과제물을 만들어야 한다. 요즘 일이 많다보니 생각보다 시간이 부족해서.... 평범하게 현재 업무에 직접적으로 연관된, Terraform module을 이용해 여러 EKS 으로 쉽게 배포하는 내용을 최종과제로 작성하기로 했다. 사용하고 있는 Terraform의 기능들 Module 테라폼에서 모듈을 사용하면 기능 별로 테라폼 코드를 작성하고 이들을 재사용할 수 있다. 조금만 바꿔서 dev1, dev2, stage1, stage2 이런식으로 동일하게 여러 EKS를 배포할 수 있는 것이다. 이렇게 되면 동일한 코드를 여럿 작성할 필요가 없고 테라폼의 재사용성을 제대로 ..

Study 2022.12.10

[스터디] Terraform의 개념부터 간단한 Terraform Registry 사용까지

멋진 CloudNeta 팀의 스터디에 이번에도 합류하게 되었다. 이번 주제는 Terraform 이다. 이번 스터디는 "테라폼 업앤러닝" 이라는 도서를 가지고 진행한다. Terraform 이라는건 IaC(Infra as Code)를 구현하는 도구이다. 왜 IaC인가? IaC, 그러니까 코드형 인프라는 왜 배우고 왜 써야 하는걸까? Infra As Code 라는 것인데, 선언적인 언어를 사용하여 인프라를 코드로 정의한다는 뜻이다. 그럼 운영환경을 완전하게 이식해서 코드로 관리할 수 있는걸까? 실수는 생기지 않을까? 이런 의문이 들법 하지만 일단 책에서 강조하는 IaC의 장점을 보면 아래와 같은 내용을 설명하고 있다. 자급식 배포 : 소수의 관리자가 점유하고 있는 인프라가 아니라 개발자가 필요할 때마다 배포를..

Study 2022.10.30

[스터디] DOIK - MySQL DB Kubernetes Operator 배포 및 테스트

쿠버네티스 데이터베이스 오퍼레이터 스터디라는 훌륭한 스터디에 참여하게 되었다. 가시다님이 진행하시는 스터디인데 그전에 명성은 들어보았으나 역시 아주 알차다. 이번 스터디에서는 데이터베이스를 오퍼레이터 패턴으로 쿠버네티스에 배포하고 운영하는 법을 배운다. 이 글은 스터디 1~3주차를 진행하면서 실습한 내용을 기록하기 위한 글이다. 쿠버네티스 오퍼레이터란? 쿠버네티스 문서의 오퍼레이터 항목을 읽어보면 오퍼레이터(Operator)는 사용자 정의 리소스 Custom Resource를 사용하여 애플리케이션 및 해당 컴포넌트를 관리하는 쿠버네티스의 소프트웨어 익스텐션이다. 오퍼레이터는 쿠버네티스 원칙, 특히 컨트롤 루프를 따른다. ... 쿠버네티스는 자동화를 위해 설계되었다. 기본적으로 쿠버네티스의 중추를 통해 ..

Study 2022.06.05

[스터디] 데이터 중심 애플리케이션 설계 - 4. 부호화와 발전

이 글은 도서 "데이터 중심 애플리케이션 설계" 를 가지고 스터디모임을 하면서 4장 - 부호화와 발전을 정리한 내용을 옮긴 글입니다. 데이터 중심 애플리케이션 설계 데이터를 처리하고 저장하는 다양한 기술의 장단점을 검토한다. 소프트웨어는 계속 변하지만 근본 원리는 동일하다. 이 책에서 소프트웨어 엔지니어와 아키텍트는 실전에 이 개념을 어떻게 적 www.aladin.co.kr 부호화와 발전 Encoding & Evolution 이 장의 핵심 문구 : 💡 여러가지 이유로 Application은 변하게 된다. 그리고 Application 기능을 변경하기 위해서는 저장하는 데이터도 변경해야 한다. 서버, 클라이언트 측 어플리케이션이 계속 유동적으로 변하기 때문에 예전 버전 코드와 새로운 버전의 코드, 이전의 데..

Study 2022.04.02
반응형