분류 전체보기 (94) 썸네일형 리스트형 swagger 보안 설정 + Istio VirtualService @nestjs/swagger는 Nest.js 서버에서 REST API를 문서화할 수 있는 패키지입니다.문서에 별도 보안 설정을 하지 않은 상태에서 URL이 노출될 경우 문서 열람 및 API 실행이 가능한 위험성이 있습니다. 환경 제한swagger 문서를 초기화하는 코드를 APP_ENV 조건문으로 감싸 로컬/개발 환경 등 특정한 조건하에서만 생성할 수 있습니다. id, password 설정설정된 id, password를 입력해야 접근 가능하도록 설정할 수 있습니다. (참고)서비스에 이미 개발되어 있는 인증/인가와는 별개로 앱 초기화시 원하는 엔드포인트에 지정하는 방식입니다. Bearer 인증 적용인증 token을 입력하도록 설정할 수 있습니다. (참고) IP Whitelist 설정허용 ip 외엔 에러를 뱉.. GCP VM Alert 설정 w/Terraform 사내 리소스 생성시 GCP 콘솔 내에서 직접 생성하는 것을 지양하고 있지만, terraform으로 이관시의 우선순위상 아직 terraform으로 만들어진 적이 없고 콘솔에만 존재하는 것도 있습니다. 이 중 하나인 monitoring alert을 terraform으로 세팅한 과정입니다.이를 통해 과거 산발적으로 만들어진 alert를 이관, 관리하고 앞으로 생성하는 alert들을 탬플릿화 및 상태 관리할 수 있습니다. 1. VM의 지표를 모니터링 하도록 설정: VM이 boot disk image로 어떤 OS를 사용하는지 파악하고 detector 또는 agent 설정일부 지표는 설정 없이도 모니터링 가능합니다. 하지만 VM의 observability 차트 또는 alert의 차트에 나오지 않는 데이터를 보려고.. MySQL + TypeORM - Illegal mix of collations Error 서버에서 발생한 에러 메세지는 아래와 같았습니다.QueryFailedError: Illegal mix of collations (utf8mb4_0900_ai_ci,COERCIBLE) and (utf8mb4_general_ci,COERCIBLE) for operation '=' 에러 메세지 내용으로 파악했을 때 이는 mysql table, column 등에서 지정할 수 있는 collation이 불일치하는 오류였고,문제가 발생한 api에는 raw query 덩어리가 들어가있기 때문에 원인 후보를 줄이고자 오류가 발생한 api와 유사한 기능을 하는 api들을 확인하였습니다.정상 동작하는 api들과 이슈 리폿 받은 api 포함 문제가 발생하는 두 api의 쿼리를 미루어보아, 특정 view의 한 column이 문.. 인프라 설정시의 multi-line string indicators yaml 파일을 보다보면 아래처럼 | (pipe) 가 들어간 부분이 있습니다.python의 f-string 처럼 작성 그대로의 multi-line 인식을 지원하는 indicator입니다.(전략) metadata: labels: app: good-service annotations: # Critical for Istio/Envoy sidecar lifecycle management sidecar.istio.io/holdApplicationUntilProxyStarts: "true" proxy.istio.io/config: | proxyMetadata: EXIT_ON_ZERO_ACTIVE_CONNEC.. MySQL - 사용자가 특정 테이블에만 접근할 수 있도록 설정 분산 시스템 개발을 하다보면 여러 서버가 동일한 DB를 공유하는 상태로 만들 수도 있습니다.설계에 따라 여러 서버가 각각의 목적에 따라 동일한 DB의 일부 테이블을 조회하거나 데이터를 수정할 수 있는데요,필요한 정보만 사용할 수 있게끔 서버에 부여한 DB 계정에 권한 설정을 해둘 수 있습니다. mysql> create table table01 (id int unsigned primary key, name varchar(20));mysql> create table table02 (id int unsigned primary key, classroom varchar(10))mysql> show tables;+---------------------+| Tables_in_common_db |+-----------.. 방송통신대 컴퓨터과학과 첫학기 후기 (2025-1학기) 배경공학계열 타과를 수년 전에 졸업한 백엔드 개발자 시작 동기번아웃 좀 맞고 나니 스스로가 무언가를 더 깊게 알아갈 흥미가 남아있는 사람인지 확인하고 싶었습니다. 수강 과목데이터베이스시스템꼭 들어야겠다고 생각한 과목 중 하나. 수강 후에도 같은 생각입니다.파이썬프로그래밍기초파이썬 좀 쓴 적 있어서 학점 편하게 따려고 넣은 과목이산수학수업 쭉 보고 기출, 교재, 워크북 다 풀면 준비되는 수학 과목입니다. 기억 되살리는데 공부 시간이 이틀은 필요했어요.디지털논리회로학우들과 함께하는 스터디에서 이 과목을 리딩하느라 미리 공부했는데 이게 주효했다 생각되는 과목입니다.데이터정보처리입문 (통계데이터학과 전공)졸업 학점도 채우고 적당한 성적을 날로 받아먹고 싶다면 넣으셔도 괜찮습니다. 개인적으로는 남은 게 없는 느.. K8s manifest management tool manifest는 K8s 리소스를 정의하는 파일입니다.선언형 커맨드(e.g. kubectl apply)로 K8s 리소스를 생성할 때 작성했던 명세죠.대개 yaml 예시를 보게 되지만 json 포맷도 가능합니다.controlplane에 있는 api에 리소스 생성을 요청할 때 이 내용이 들어갑니다. 환경별로 설정을 약간씩 다르게 주거나 여러 사람이 인프라에 손을 대면 곧 재사용 욕구와 탬플릿 및 버전 관리의 필요성을 느끼게 됩니다.이 필요성을 이런저런 이유로 덮어두고 살다간 오타부터 한쪽만 바꾼 설정값 등 다양한 원인을 가진 문제가 발생합니다.api 개발시 어딘가에 노출되는 부분만 약간 다르게 반환해달라 하는 요청을 받았을 때 있던 함수를 복사해놓고 살짝 바꿔 쓰다간 나중에 피를 보게 되는 것처럼요.그래서 .. K8s service 지금의 목적은 무언가 할 수 있게끔 만들어둔 서버를 실행시키고, 이걸 안정적으로 잘 써먹는데 있습니다.kubernetes를 쓰는 관점에선 우리가 원하는 상태를 유지하기만 한다면 서버 여럿이 죽었다가 새로이 생겨나는 건 별 일이 아닙니다.서버 하나 띄우고 애지중지 입김 불어 모셔두는 방식이 아니니까 당연하지만,한 시간 전에 제 요청을 처리해준 172.18.0.5 pod는 지금 없을 수도 있죠.그럼 지금 새 요청을 하려면 저는 누굴 뭐라고 불러야 될까요? K8s에서는 pod들을 논리적으로 묶어서 명찰을 붙여줍니다.필요시 그 명찰의 이름을 불러주면 됩니다. 3조!호출되면 그 안에서 누굴 어떻게 부를지는 이 조를 결성할 때 써둔 명세에 있습니다.여기서의 그룹화와 그 명세가 K8s의 service 중 Cluste.. K8s 기초 kubernetes에서 node는 뭔가 할 수 있는 머신을 칭하는 단위입니다.cluster는 컨테이너 오케스트레이션 플랫폼으로써의 역할을 하기 위한 node 그룹으로,primary한 역할의 control plane과 1개 이상의 worker node로 구성됩니다.일반적으로 후자를 node라고 부릅니다. 구성 요소위치이름역할control planeapi다른 구성 요소들의 요청이 꽂히는 곳etcdcluster 내의 정보를 저장해둔 dbscheduler배치 안 된 pod를 적절한 node에 배치controller managercurrent state를 확인하고 desired state를 추구 (이 모든 확인 및 추구에 따른 동작은 전부 api에 요청함)nodekubeletnode 내 pod(1개 이상의 컨테이.. docker network docker network는 docker 컨테이너간 그리고 컨테이너 외부와의 통신 기능을 제공하는데 쓰입니다. docker daemon을 실행하면 3개의 기본 network와 virtual network interface인 docker0가 생성됩니다. $ docker network lsNETWORK ID NAME DRIVER SCOPE1edf6f027a5a bridge bridge local3807b42fe5f2 host host locale19d633c09eb none null local$ ifconfigdocker0: flags=4163 mtu 1500 inet 172.17.0.1 netmask 255.25.. 이전 1 2 3 4 ··· 10 다음