목록📖 전체보기 (254)
즐겁게, 코드
함수 컴포넌트를 사용할 때 React.FC 라는 제네릭을 활용하면 children, displayName, defaultProps 등의 함수 컴포넌트가 갖는 기본 속성들에 대해 타입 지원을 받을 수 있습니다. import React from "react"; export const Child: React.FC = ({children}) => { return {children} } 아마 React.FC를 사용하는 가장 큰 이유도 chlidren을 갖는 컴포넌트의 타입을 지정하기 위해서일 텐데요, 하지만 React 18부터는 위 코드에서 Property 'children' does not exist on type... 이라는 오류가 출력됩니다. 그 이유는 children 프로퍼티가 React.FC에서 제외되었..
최근 새로운 토이 프로젝트를 개발하면서, 빠른 개발을 위해 firebase strorage 를 활용해 갤러리 서비스를 구현하고 있었습니다. 처음에는 firebase storage가 5GB의 스토리지를 항상 무료로 제공한다는 점에서 무료로 프로젝트를 운영할 때 적합할 것 같았지만, "대역폭 요금" 이라는 예상치 못했던 요인으로 인해 스토리지를 포기하게 된 과정을 간단히 소개해보려 합니다. TL;DR 스토리지를 결정할 때는 저장 용량뿐만 아니라 대역폭 요금 역시 염두에 두어야 한다. 스토리지는 AWS 프리 티어를 적용받는 S3가 가장 경제적이다. 만약 AWS 프리 티어 기간이 만료됐다면 월 5GB, 30GB 대역폭(약 4천원 상당)을 무료로 제공하는 firebase storage가 괜찮은 선택이 될 수도 있..
@kubernetes/client-node 라이브러리를 통해 웹 콘솔로 쿠버네티스를 제어할 수 있는 프로젝트를 계획중이었는데, 약 일주일간의 데모 스크럼 이후 결과적으로 불가능에 가깝다는 결론을 내리게 되어 이번 글에서 그 이유를 정리해보려 합니다. 프로젝트 기획 배경 쿠버네티스의 학습 난이도와 더불어 개인적으로는 쿠버네티스를 GUI로 지원하는 툴이 아직 많이 부족하다고 느꼈습니다. 또한 공식 쿠버네티스 대시보드와 lens 역시 리소스의 조회만을 지원하고, 생성은 불가능한 것으로 파악해 CRUD를 모두 지원하는 어플리케이션은 충분히 수요가 있을 것이라 생각했습니다. @kubernetes/client-node @kubernetes/client-node 라이브러리는 쿠버네티스에서 제공하는 공식 SDK로, 쿠..
[백준 온라인 저지 링크] 16469번: 소년 점프 첫째 줄에 미로의 행과 열의 크기를 나타내는 자연수 R과 C가 주어진다. (2 ≤ R, C ≤ 100) 다음 R줄에 걸 쳐 길이 C로 이루어진 각 줄의 미로의 정보가 공백 없이 주어진다. 숫자 0은 이동 가능한 www.acmicpc.net BFS에 약간의 잡기술을 얹은 문제입니다. 풀이가 복잡하지는 않은데, 이걸 설명하려 하니 뭔가 복잡해질 것 같아 적당히 "이렇게 푼 사람도 있구나" 하시고 봐주셔도 될 것 같습니다. [정답 코드 - Python] import sys from collections import deque input = sys.stdin.readline R, C = map(int, input().split()) visitedA = [[-1..
쿠버네티스에서는 노드가 드레인되거나 노드의 가용 자원이 부족한 등의 이유로 파드가 종료되는 일이 비일비재한데요, 이 때 마치 두꺼비집을 내리는 것처럼 한순간에 모든 프로세스를 종료한다면 중요한 데이터나 네트워크 연결이 그대로 유실될 위험이 존재합니다. 이번 글에서는 사용자에게 미칠 영향과 복구 소요를 최소화하기 위한 컨테이너의 정상 종료(Graceful Termination) 방법을 소개합니다. TL;DR 파드 종료 시 kubelet에서 SIGTERM 신호를 송출하고, 컨테이너는 SIGKILL를 수신할 때까지 정상 종료를 위해 대기한다. (컨테이너 종료 시작 - SIGTERM 수신 - 정상 종료 동작 - SIGKILL 수신 - 컨테이너 강제 종료) 컨테이너에서 SIGTERM 신호를 수신하지 못하는 경우를..
AWS에서는 대상의 상태를 확인하기 위해 Route53이나 ELB가 제공하는 상태 검사(Health Check) 를 활용할 수 있었는데요, 쿠버네티스에서는 이와 유사한 "프로브" 라는 기능을 통해 상태 검사를 수행할 수 있습니다. 이번 글에서는 컨테이너의 상태를 검사할 수 있는 3가지 프로브를 정리해보고자 합니다. Liveness Probe Liveness Probe는 컨테이너가 동작 중인지를 검사하는 역할로, 컨테이너 상에서 특정 동작을 수행하거나 엔드포인트로 네트워크 요청을 보냄으로써 해당 컨테이너가 정상적으로 기동중인지를 검사합니다. HTTP 요청을 통해 상태를 검사하는 예시 (httpGet 사용) livenessProbe: httpGet: path: / port: 80 initialDelaySec..
온라인 게임을 해보신 분들이라면 한번쯤은 패치로 인해 게임 접속이 불가한 경험을 해보셨을 텐데요, 이렇게 패치로 인해 서비스 이용이 중단되는 것을 반기는 유저는 거의 없을 것입니다. 24시간 운영이 필요한 데이터베이스나 글로벌 서비스 등을배포할 때는 서비스가 중단되면 운영에 부정적인 영향을 미칠 수 있는데요, 신규 버전 배포로 인한 부정적인 영향을 최소화하기 위한 방법이 바로 무중단 배포입니다. 무중단 배포의 핵심은 둘 이상의 인스턴스를 운영하면서 로드밸런서를 통해 인스턴스로 전해지는 요청을 적절히 제어 하는것으로, 이번 글에서는 상황에 따라 사용할 수 있는 3가지 무중단 배포 전략을 알아보도록 하겠습니다. Rolling 배포 전략 롤링(Rolling) 배포는 인스턴스를 한 대씩 새로운 버전으로 교체하..