| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- 웹 애플리케이션 요청 흐름
- kafkaCLI
- 특정 행 출력
- Port already in use: 9999
- redis 설정
- 선언적 배포
- 객체
- 의존성 패키지 설치
- 포함 관계
- 웹 애플리케이션 아키텍처
- Oracle.DatabaseError
- 오프라인 설치
- 쿠버네티스 패턴
- Exception Handing
- 폐쇄망
- redis 명령어
- ubuntu redis
- image 압축
- apt-rdepends
- 예측 범위 내의 요구사항
- redis 외부설정
- 도커
- 자료구조
- SQL 내장 함수
- 의존성 설치
- REST 성숙도 모델
- 예외 전가
- abstract 제어자
- 특정 행
- docker
- Today
- Total
목록전체 글 (103)
리꾸므
OpenAI 인프라팀의 Bohan Zhang은 PGConf.dev 2025에서 OpenAI의 PostgreSQL 사용 전략과 문제 해결 사례를 공유했습니다. PostgreSQL을 샤딩 없이도 대규모 서비스에 활용하는 실제 사례입니다.아키텍처 개요구성: Azure의 관리형 PostgreSQL 사용아키텍처: 1개의 writer(기본 노드) + 다수의 reader(읽기 전용 복제본)샤딩 없음PgBouncer + Kubernetes를 통한 연결 풀링 사용Datadog으로 모니터링전 세계 지역에 cross-region read replica 배포주요 과제와 해결 전략1. 쓰기 부하 (Writer Bottleneck)모든 쓰기는 하나의 primary에 집중 → 병목 발생해결 방법:가능하면 쓰기 offload쓰기 빈..
선언적 배포 선언적 배포 패턴의 핵심은 쿠버네티스의 디플로이먼트 자원이다. 디플로이먼트는 컨테이너 그룹의 업그레이드 및 롤백 프로세스를 캡슐화하며 컨테이너 그룹을 반복적이고 자동화된 동작으로 실행할 수 있다. 문제 마이크로서비스 수가 증가하면 새로운 버전을 지속적으로 업데이트하고 교체하는 것도 부담이 커지게됩니다. 업그레이드는 새로운 버전의 파드를 시작하기, 이전 버전의 파드를 안전하게 중지하기, 새로운 파드가 성공적으로 시작되었는지 대기 및 확인하기, 실패할 경우 이전 버전으로 롤백하기 등의 동작을 포함합니다. 이런 단계를 수동으로 진행하다보면 작업자에 의한 오류가 발생할 수 있고, 적합한 스크립트를 만드는 것도 많은 노력이 필요합니다. 두 방법 모두 릴리스 프로세스에 병목현상을 야기합니다. 해결 디플..
기본 패턴은 컨테이너화된 어플리케이션이 우수한 클라우드 네이티브 일원이 되기 위해 준수해야하는 원칙을 나타냅니다. 어플리케이션 특성 및 직면하게 될 제약조건에 관계없이 이러한 지침을 따르는 것을 목표로 해야합니다. 이러한 원칙을 준수함으로써 어플리케이션은 쿠버네티스 상의 자동화에 적합하게 됩니다. 예측 범위 내의 요구사항 클라우드 네이티브에 친화적인 일원이 되기 위해 컨테이너화된 애플리케이션이 준수해야하는 여러 가지 기본 원칙 예측 범위 내의 요구사항(Predictable Demands)패턴이란 하드 런타임 의존성이나 자원 요구사항과는 상관없이 애플리케이션 요구사항을 선언하는 방법에 관한 것입니다. 요구사항 선언은 쿠버네티스가 클러스터 내에서 애플리케이션에 적합한 노드를 찾기위해서 반드시 필요합니다. 문..
문제 발생 다른 개발자분 테스트할때 사용하도록 오라클을 컨테이너로 구축해놓았는데 어제부터 연결이 되지 않는 이슈가 발생, 오늘 말씀하셔서 인지하게되었다. 이슈로그 Oracle.DatabaseError: ORA-12514: TNS:listener does not currently know of service requested in connect descriptor 원인 리스너에 서비스가 등록되지 않아 발생하는 문제 리스너 재부팅 또는 컨테이너 재부팅이 원인으로 추정된다. 해결 보통 해당 오류는 tnsnames.ora, listener.ora 파일의 서버가 잘못기입되어 발생, 다만 이번에는 테스트하시는분도 따로 건든게 없다고하고, 안에 내용을 봤을때도 정상이었다. 혹시나해서 새 컨테이너를 띄우고 비교해봐도..
구축한 서비스를 폐쇄망에 설치할 일이 많아졌다. 그럴때마다 온라인 환경에서 패키지를 다운받고 폐쇄망에서 설치할때 사용하는데 일반적으로 apt download 명령으로는 의존성이 아닌 설치파일만 '.deb'으로 다운받아지거나 의존성을 다운받을때 특정 패키지는 저장소에서 사라진 패키지라 번거로웠다. 이번에 새로 설치해야할 서비스는 의존성이 많아서 기존 방식을 사용하면 소요가 너무 컸다 이에 다른 방법을 찾다 도움이 되는 패키지를 확인하고 유용해서 기록해본다. apt-rdepends 설치 $ sudo apt install apt-rdepends 사용법 1. 대상 패키지 의존성 포함 '.deb' 다운 # sudo apt-get download $(apt-rdepends {{대상 패키지명}} | grep -v ^..
문제 발생 topic 생성 등 kafka CLI 사용했을 때 발생하여 CLI 도구 사용 제한 이슈로그 Error: Exception thrown by the agent : java.rmi.server.ExportException: Port already in use: 9999; nested exception is: java.net.BindException: Address in use (Bind failed) 원인 카프카가 JMX 포트 9999에서 실행 및 수신 중인 상태에서 kafka CLI를 실행하면 KAFKA_JMX_OPTS & JMX_PORT=9999 환경이 정의되어있기때문에 포트 9999에서 JMX 수신을 시작하고 9999에서 이미 수신하고 있는 kafka와 충돌하여 발생 해결 정의된 환경을 바..
설치 1.바이너리 설치 https://github.com/grafana/loki/releases 위 깃랩에서 원하는 버전의 loki, promtail, logcli 바이너리 다운로드 2.바이너리 실행 권한 부여 $ chmod 755 loki-linux-amd64 promtail-linux-amd64 logcli-linux-amd64 # logcli 바이너리 복사 $ sudo cp ./logcli-linux-amd64 /usr/local/bin/logcli 3.config 파일생성 # 기본 loki, promtail config 파일 $ wget https://raw.githubusercontent.com/grafana/loki/main/cmd/loki/loki-local-config.yaml $ wget..
manifest 파일이란? 쿠버네티스의 오브젝트를 생성하기 위한 메타 정보를 YAML이나 JSON으로 기술한 파일, manifest 파일에 기재된 내용에 따라 파드를 생성한다. 파일의 내용을 쿠버네티스에 업로드하면 그 내용이 데이터 베이스(etcd)에 '바람직한 상태'로 등록됩니다. 특징 docker-compose와 달리 매니페스트 파일이름이 지정되어 있지 않습니다. 리소스 단위로 작성합니다.(서비스, 디플로이먼트 등) 한 파일로 작성시 각 리소스를 '---'로 구분합니다. 디플로이먼트 항목에 레플리카세트와 파드가 포함되어 있습니다. 매니페스트 파일은 여러 파일로 분할할 수 있습니다. *오브젝트 : 파드, 서비스, 디플로이먼트 manifest 작성 내용 항목명 설명 apiVersion API 그룹 및 버..