
Go언어에 대한 관심은 언제부터였을까? k8s 오픈소스(Operator 등)를 뒤적거리다보면 대부분 Go언어로 구성되어 있는 것을 볼 수 있다. 나 또한 k8s 생태계의 개발자로서 자연스럽게 Go언어에 어떤 특징들이 있고, 왜 사용하는지 등에 대한 궁금증들이 생겨났다. 근데 궁금증으로 쉽게 공부할 수 있는 것은 아니다. 현재 업무에서 사용하고 있는 언어가 아닌게 제일 컸다. 또한, 아직 역사가 그리 오래되지 않은 언어로 배우는 로드맵이 있다던지, 자료가 엄청 방대한다던지, 나아가 나에게 궁금증 이상의 동기부여가 부족했다. 궁금증으로 일단 udemy 강의를 사서 쭉 들었던 경험은 있는데, 그 이상 나아가지 않아 얼마가지 않아 다 까먹어버렸다. 최근에 와서야 갑작스레 호기심이 생겼다. Java/Spring에..

개요 쿠버네티스 자체는 컨테이너를 생성, 시작, 중지하는 법을 알지 못한다. 대신 이런 작업을 컨테이너 런타임이라는 컴포넌트가 담당해 진행한다. 이 컨테이너 런타임에 대해 알아보자. 컨테이너 런타임을 간단하게 설명하면 다음과 같다. Linux: cgroups 및 namespace 같은 커널 기능을 이용하여 컨테이너 프로세스를 생성하는 녀석 Kubernetes: kubelet과 함께 동작하며 쿠버네티스 node에서 컨테이너를 생성 및 관리하는 녀석 그럼 2가지 의문점이 든다. 왜 쿠버네티스는 몰라야하는가? 명색의 컨테이너 기반 오케스트레이션인데 몰라도 되나? kubelet이 컨테이너를 관리한다고 했다. kubelet 내부에 컨테이너 런타임이 있다고 보면 되나? 이 의문점에 대해 답을 하기 위해 OCI, C..

Cilium을 공부하며 eBPF를 알게 되었다. Cilium의 근간이 되므로, Cilium을 학습하기 이전에 간단하게나마 살펴보고자 한다. 이 글은 아래의 글들을 참고하여 작성되었다. https://ebpf.io/what-is-ebpf/ https://www.brendangregg.com/blog/2019-01-01/learn-ebpf-tracing.html https://ebpf.io/what-is-ebpf/ eBPF가 뭐야? eBPF(extended Berkeley Packet Filter)란 운영체제 커널과 같은 권한이 있는 컨텍스트에서 샌드박스가 적용된 프로그램을 실행할 수 있는 기술 프로그램을 변경/추가할 때마다 커널 소스코드를 변경하거나 커널 모듈을 새롭게 빌드/로드 할 필요가 없다. 왜 eB..

Deep Link, Universal Link, App Link를 간단하게 훑어보자. Deep link - 딥링크 모바일 애플리케이션을 자동으로 열어 앱 내의 특정화면으로 보낼 수 있는 링크 앱 연결의 소요 시간을 단축하고, UX를 개선할 수 있음 URL 매개변수를 이용해 토큰/미리 채워진 양식 등의 데이터를 전달할 수 있음 Deep link를 선택하면 iOS: 앱을 열 것인지 묻는 메시지가 표시되거나 Android: 사용할 앱을 묻는 대화상자가 표시되거나 Deep link 주소의 구조는 일반적인 https 구조가 아닌 custom한 링크를 가짐 custom_scheme://host/path?param=x scheme 부분만 다를 뿐 나머지는 https에서 사용하는 주소처럼 동일하게 설정할 수 있음 Un..
이전부터 문제 많던 Enum의 values(). Kotlin v1.9.0에서는 드디어 Enum.values()를 대체하는 녀석인 entries property를 stable feature로 제공한다. 내부적인 구현은 다르지만, 사용하는 법은 values()와 같다고 보면 된다. fun main() { val americaBrand = Brand.entries.filter { it.country == "America" } println(americaBrand) } enum class Brand(val country: String) { SAMSUNG("Korea"), APPLE("America"), GOOGLE("America"), MICROSOFT("America"), } 릴리즈 문서에서는 이제 아예 va..
아래 글을 읽으면서 메모하고 개인적인 생각을 적은 글 최근에 PostgreSQL을 사용해봤는데 뭐가 특별한지 모르겠다고 느끼던 차, 보이길래 읽었다. 그냥 아주아주 단순한 데이터 저장하는 용도로만 써서 몰랐지... 그나저나 사이트 OG image 웃기다 (제목에 딱 어울림) When Did Postgres Become Cool? Craig takes a look at the history of Postgres. From the origins of the project through some of the key production features that make Postgres what it is today. www.crunchydata.com crunchydata 라는 회사에 속한 분이 쓴 글이라 회사..

동시성과 병렬성을 헷갈리지 말자 둘 이상의 코드 조각이 실행될 때 동시성 (Concurrency): 동시에 실행 중인 것처럼 행동하는 것 병렬성 (Parallelism): 실제로 동시에 실행되는 것 동시성을 얻으려면 실행 중의 코드의 다른 부분으로 실행을 전환할 수 있어야 함. Fiber, Thread, Process 등을 이용해 구현 병렬성을 얻으려면 2가지 일을 동시에 할 수 있는 하드웨어가 필요함. 여러 개의 코어, 여러 CPU, 네트워크에 연결된 여러 대의 컴퓨터 등을 이용해 구현 모든 일엔 동시성이 있다 시스템의 규모가 어느정도 넘어가면 동시성을 고려하지 않고 코드를 작성하는 것이 거의 “불가능”함 코드 짤 때 이런게 잘 안보인다면, 라이브러리/프레임워크 안에 숨겨져 있는 경우일 것 실제 세상이..
Spring에서의 ETag Spring에서도 ETag를 손쉽게 사용할 수 있도록 지원하고 있다. 그 중 리소스 캐싱에 대한 기능은 여러 API에서 공통으로 사용할 수 있는 기능이기에 Filter로서 지원하고 있다. 충돌 피하기 (Lost update problem)에 대해서는 지원하지 않는 듯하다. 이에 대해서는 뒤에서 더 알아보자. ShallowEtagHeaderFilter class에서 지원한다. GitHub - spring-projects/spring-framework: Spring Framework Spring Framework. Contribute to spring-projects/spring-framework development by creating an account on GitHub. g..
- Total
- Today
- Yesterday
- 쿠버네티스
- 하루
- boj
- python
- tag
- MySQL
- WebFlux
- 로그
- jasync
- Log
- 클린 아키텍처
- OpenTelemetry
- gradle
- docker
- Kubernetes
- 백준
- Intellij
- 일상
- Spring boot
- container
- 알고리즘
- Spring
- java
- Clean Architecture
- 비동기
- k8s
- Algorithm
- Istio
- HTTP
- c++
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
31 |