분류 전체보기(289)
-
[Kubernetes in Action] StatefulSets: deploying replicated stateful applications
Replicating Stateful Pods 이전 포스팅에서 살펴본 ReplicaSet(Replication Controller도 있지만 비슷한 개념이므로 ReplicaSet만 언급하도록 하겠습니다.)은 하나의 파드 템플릿(pod template)으로부터 여러 개의 파드 복제본들을 생성합니다. 각각의 파드들은 name, IP주소를 제외하고는 모두 동일하며 만약 파드 템플릿이 PVC(Persistent Volume Claim)을 통한 스토리지를 가지고 있다면, 해당 파드 템플릿으로부터 생성된 모든 파드들은 동일한 PVC를 사용하게 되므로 동일한 스토리지를 사용하게 됩니다.(파드는 PVC를 레퍼런스 하고 있고 이 레퍼런스는 파드 템플릿에 명시되어 있기 때문에 동일한 참조를 갖게 되는 것입니다) 따라서 Re..
2021.12.26 -
[Kubernetes in Action] Deployments: Updating Applications Declaratively
Updating Applications Running in Pods 기본적으로 위의 구조와 같이 여러 개의 인스턴스를 통해 서비스되고 있는 애플리케이션을 업데이트하는 방법에는 두 가지가 있습니다. 일단 파드가 생성되고 나면 그 내부의 컨테이너 이미지를 수정할 수 없기 때문에 새로운 버전의 이미지를 서비스하고 싶다면 기존의 파드를 제거한 후에 새로운 버전의 이미지를 포함한 파드를 새로 생성해야 합니다. 우선 존재하는 파드를 모두 지운 후에, 새로운 파드들을 시작한다. 새로운 파드들을 시작한 이후에, 이들이 정상적으로 동작하기 시작하면 이전의 파드들을 제거한다. Deleting old pods and replacing them with new ones ReplicationController를 통해서 파드를 ..
2021.12.19 -
[Kubernetes in Action] Accessing Pod Metadata and Other Resources
Kubernetes in Action 2nd Edition을 정리한 글입니다. Passing metadata through the Downward API 애플리케이션은 종종 자신이 동작하고 있는 환경에 대한 정보를 알아야 할 때가 있습니다. 실제로 대부분의 애플리케이션이 Dev, Staging, Production등의 환경을 구분해서 동작하며, 각각의 환경에 따라 서로 다른 정보들을 필요로 합니다. 이를 위해 지난 포스팅에서 살펴보았던 ConfigMap, Secret을 사용하는 방법도 있지만 쿠버네티스에서 제공하는 다른 기능인 DownwardAPI를 사용할 수 도 있습니다. 이번 포스팅에서는 DownwardAPI를 사용하여 running Pod에 Environment Variable에 대한 정보를 제공하..
2021.12.12 -
개발일지 (10월 회고)
내가 지향하는 개발의 초점을 "어떤 기술을 적용할 것인가"에서 (물론 중요한 부분을 차지하고 있다) "어떤 제품을 만들 것인가?"로 바꾸면서 개발일지가 커버하는 범위가 어째 많이 넓어진 것 같다. 다음 달부터는 개발일지에서 아예 LifeLog정도의 이름으로 변경할까 고민이 된다. 독서에 대하여 2017년 대학교에 입학하면서 세운 다짐이 있다면, 대학교 졸업장을 받기 전까지 1000권의 책을 읽고 기록으로 남기는 것이었다. 물론 그때는 굉장히 막연한 목표였고, 새해가 밝기 전 매번 세우는 어느 집 삼촌의 금연 다짐 같은 정도의 목표였었다. 시간이 지나 목표를 세운지도 벌써 4년이 지났고, 현재까지 기록해둔 책은 대략 650권 정도가 되었는데, 아직 졸업까지는 (최소) 3학기가 남았고, 내년 9월이나 되어야..
2021.11.07 -
[Kubernetes in Action] ConfigMaps and Secrets
Kubernetes in Action 2nd Edition을 정리한 글입니다. Configuring Containerized Applications 애플리케이션을 개발하다 보면, 컨테이너화된 애플리케이션 안에 환경변수등을 주입해주어야 할 때가 있습니다. 데이터베이스에 접근하기 위한 암호이거나, 특정 Third-party Library를 사용하기 위한 private key와 같은 예시가 있는데, 이러한 정보들을 컨테이너화된 애플리케이션에 넣어주는 방법은 일반적으로는 크게 다음 3가지가 있습니다. Passing Command-line arguments to containers Setting Environment variables for a container Mouting Configuration files ..
2021.10.30 -
Going deeper with convolutions (GoogLeNet) - 2014
Abstract ILSVRC14에서 우승한 모델 GoogLeNet은 네트워크의 "width"와 "height"를 모두 확장하면서도 연산량을 constant하게 유지시킴으로써 연산효율을 높인 모델이라 설명한다. 이를 위해 Hebbian Principle과 Multi-Scale Processing을 적용했다고 한다. GoogLeNet은 총 22개의 레이어로 구성되어 있다. (2014년 논문이라 2015년 논문인 ResNet이 나오기 전이므로 Layer의 개수가 비교적 적다.) Hebbian Principle: 헵의 이론이라고도 불리며 뇌의 시냅스 연결성은 경험에 의해 수정될 수 있고 시냅스 뉴런의 pre, post firing에 의해서도 영향을 받는다는 내용이다. 위 논문에서는 "– neurons that ..
2021.10.11