[함수형 리팩터링] 비동기 전환을 고려한 공유 Mutable 제거
·
Programming Paradigm
배경이번 리팩터링 목적은 코드 내 작업을 비동기적으로 바꾸기 전에 문제(race, 흐름 의존성)를 제거하는 것이다. 그 방법은 기존 코드에 함수형 패러다임을 적용하는 것이다. 상태 변경을 줄이고, 행동을 조합 가능하게 만들 것이다. 0. 기존 코드 아래 코드는 이미지 첨부파일 리스트를 가져와서 NCloud Green Eye를 통해 각 첨부파일에 대해 유해성 판별을 한다. 현재는 이 작업이 .block() 기반 순차 처리라 race가 표면화되진 않지만, 비동기 전환 시 공유 리스트에 대한 동시 접근이 생길 수 있어 구조적으로 위험해진다. 또한, for문 내에서 흐름 제어와 계산 로직이 묶여 테스트가 어려웠다.참고) 비동기 전환을 고려하는 이유는 외부 API요청에 대해 굳이 쓰레드를 점유하게 하고 싶지 않은..
[(Kubeadm) K8s 클러스터 구축 3/3] Kubeadm init 및 Node join
·
Kubernetes
[(Kubeadm) K8s 클러스터 구축 2/3] Kubeadm, Kubelet, Kubectl 설치[(Kubeadm) K8s 클러스터 구축 1/3] Container Runtime 설치개요kubeadm 기반으로 K8s클러스터를 구축하는 과정을 3편의 글로 요약해 본다.가용 Virtual Machine이 2대 이상(각 Machine의 메모리 2GB, 2 CPU 이상) 준비됐crayeji.tistory.com앞선 글 [01. Container Runtime(Containerd) 구성]와 [02. Kubeadm, Kubelet, Kubectl 설치]에서 Container Runtime 및 kubeadm, kubelet, kubectl 설치가 마쳐져 있어야 한다.Kubeadm Init 하기 전 설정1. Mem..
[(Kubeadm) K8s 클러스터 구축 2/3] Kubeadm, Kubelet, Kubectl 설치
·
Kubernetes
[(Kubeadm) K8s 클러스터 구축 1/3] Container Runtime 설치개요kubeadm 기반으로 K8s클러스터를 구축하는 과정을 3편의 글로 요약해 본다.가용 Virtual Machine이 2대 이상(각 Machine의 메모리 2GB, 2 CPU 이상) 준비됐다고 가정한다.첫 단계로 Container Runtime을 설치한crayeji.tistory.com앞선 글에서 노드들에 Pod가 실행될 수 있게 Container Runtime을 설치했다.이번 글에서는 클러스터를 구성하고 초기화하기 위한 kubeadm, 각 노드에서 K8s API 서버 명령을 받아 Pod을 관리하고 Container Runtime이 컨테이너를 실행하게 하는 에이전트 kubelet, 사용자가 API 서버를 통해 명령할 ..
[(Kubeadm) K8s 클러스터 구축 1/3] Container Runtime 설치
·
Kubernetes
개요kubeadm 기반으로 K8s클러스터를 구축하는 과정을 3편의 글로 요약해 본다.가용 Virtual Machine이 2대 이상(각 Machine의 메모리 2GB, 2 CPU 이상) 준비됐다고 가정한다.첫 단계로 Container Runtime을 설치한다. Containerd를 사용한다.1. Container Runtime 설치Step 1. Containerd 설치설명Pod가 Node에서 실행될 수 있게, 클러스터의 노드들에 Container Runtime을 설치한다.CRI를 통해 Container Runtime에 K8s가 인터페이스 한다. 이 글에서는 Containerd라는 Container Runtime을 설치해 본다.Getting-started 문서의 Containerd 설치 방법 중 Option..
[SigV4] 개념, 서명된 요청 생성하기(JS)
·
AWS
개요AWS API 요청에 인증 정보를 추가하는 서명 메커니즘.요청 주체를 확인하고, 내용 또한 중간에 변조되지 않았다는 것을 증명하기 위한 서명 방식 중 하나이다.SigV4 서명 프로세스를 이용해서 요청에 Authorization header를 추가하면,요청을 받는 쪽(AWS 리소스. API Gateway 등)에서도 요청 쪽에서 서명을 만든 것과 같은 원리로 서명을 만들어 서로 비교해 본다. 같으면 요청을 처리한다. 이를 통해 요청이 정확히 그 시각&그 클라이언트가 보낸 것임을 보장하고, 요청 Body까지 포함해서 무결성 확인하며, 요청 Expiration을 제한해 재사용 공격 방지도 가능해진다.요청에 포함시킬 요소SigV4로 HTTP/HTTPS요청을 보낼 때는 아래 요소들을 포함해야 한다.E..
CKA 쿠버네티스 자격증 취득과정 기록 (2025. 02 변경 이후)
·
Kubernetes
취득 동기Cloud, MSA에 관심을 가진 후로 적합한 기술을 찾다 보니 쿠버네티스에 관심을 갖게 됐다그때부터 3개월 정도 스터디를 해보니까, 리소스를 기반으로 여러 서비스 배포는 물론이고 Security, Networking, Scheduling까지 마치 농장 운영하듯이 운영 가능한 게 굉장히 짜임새 있게 느껴졌다. 클러스터에서 필요한 개념들이 추상화가 매우 잘 되어 있어서, yaml로 이렇게 명쾌하게 시스템을 구성할 수 있구나 싶었다. 예를 들면 Ingress로 룰을 정의하고 Ingress Controller Pod가 실질적으로 처리하도록 역할이 분리되어 있으면서도, 이 모든 건 특정 종류의 리소스로 정의된 것이라는 점 등이다.공부를 하면 할수록, 앞으로 더 작은 단위의 더 많은 서비스를 체계적으로 ..
Amazon S3 Vectors 출시, OpenAI embeddings 넣어보기
·
AWS
개요며칠 전 AWS에서 벡터 클라우드 스토리지를 공개했다. S3 기반이기에 경제성과 내구성을 기대할 수 있을 것 같다.나는 Qdrant로 벡터 DB를 구성하고 있었는데, Amazon S3 Vectors로 교체해볼까 한다. Embeddings는 우선 Bedrock 대신, OpenAI embedding model을 사용했다. Introducing Amazon S3 Vectors: First cloud storage with native vector support at scale (preview) | Amazon Web ServicesAmazon S3 Vectors is a new cloud object store that provides native support for storing and querying..
PV 확장 원리, Kubernetes CSI Driver
·
Kubernetes
Kubernetes에서의 Volume, File System 확장AWS를 예로 들자. EC2에서 EBS 등 스토리지를 사용하는 상황에서 볼륨 용량을 늘리려면, 콘솔 등에서 EBS Volume 크기를 조정하고, EC2 인스턴스에서 파티션 및 File System 확장을 했었다. 그렇다면 쿠버네티스에서는 어떤 방법으로 Pod에 연결된 PVC의 PV를 늘릴 수 있는지,Volume확장과 File System확장은 어떤 과정을 통해 일어나는지 살펴본다.Persistent Volume Expansion기존에는 PVC를 확장하려면 PVC 및 PV 삭제/재생성 같은 귀찮은 작업들이 필요했다.Kubernetes v1.11부터 정식 베타로 Persistent Volume Expansion가 도입되었다.덕분에 allowVo..