일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- go
- GoF
- 사설 ip
- http 413
- elasticsearch
- Intellij
- Logrus
- 대규모 시스템 설계
- UnBuffered channel
- gitops
- 컴포지트패턴
- notification system
- AWS
- Kubernetes
- Buffered channel
- 배포 파이프라인
- Infra
- 디자인패턴
- 오블완
- kube-prometheus-stack
- intellij ide
- System Design
- 티스토리챌린지
- apollo router
- 윈도우키보드
- 배포 프로세스
- m4 pro
- golang
- body size
- goland
- Today
- Total
목록시스템구축 (18)
Fall in IT.
이슈기존의 쿠버네티스에 설치된 kube-prometheus-stack의 대시보드를 설정하던 도중 elasticsearch 정보를 받아오기위해서 elasticsearch exporter를 설치했다.그리고 prometheus에서 데이터를 scrape 하기 위해서 설정을 변경하고 helm 패키지 매니저를 통해서 kubernetes 환경에 upgrade를 실행했다. 그랬더니…. kube-prometheus-stack의 grafana 디플로이먼트가 실행되지 못하는 문제가 발생했다.쿠버네티스 클러스터에 노드들의 자원도 충분했음에도 불구하고 파드의 생성이 반복적으로 실패해서 자세히 확인해보게 되었다. 이슈 원인Helm Chart 버전 간 Breaking Changeskube-prometheus-stack의 버전이 5..
안녕하세요. 오늘은 DDNS에 대해서 간단하게 설명해보려고 합니다.집에 들어오는 Public IP 주소는 유동 IP를 보통 사용하는데요, 이 IP를 DDNS를 사용하면 특정 주소로 접속이 가능합니다. ISP에서 들어오는 유동 IP가 변경되더라도요. 그 원리에 대해서 설명해보겠습니다. DDNS란?Dynamic Domain Name System으로 인터넷 서비스 제공자(ISP)가 동적으로 변경하는 IP 주소와 도메인 이름을 자동으로 매핑해주는 시스템입니다.이는 IP 주소가 고정되지 않고 계속 변경되는 환경에서 특정 도메인을 통해 항상 동일한 디바이스나 서비스를 접속할 수 있도록 만들어줍니다. DDNS가 필요한 이유1. 동적 IP 환경일반 가정용 인터넷 사용자나 일부 기업은 ISP로부터 동적 IP를 할당받습니..
현재 필자의 시스템은 MSA로 구성되어있다. 그리고 각 마이크로서비스의 로그 기록은 Elasticsearch에 기록되고 있는데 그 방식이 조금 특이(?)하다.전통적인 EFK 시스템을 통해서 기록되는 것이 아니라 로그라이브러리를 통해 기록되고 있기 때문이다. 왜 로그라이브러리를 통해서 로그 데이터를 기록하게 됐는지, 각각의 장단점은 무엇인지 간략하게 설명하고자한다. 로깅 라이브러리를 통해서 Elasticsearch로 전송하는 방식장점구조 단순성Fluentd, Logstash와 같은 추가적인 로그 수집 레이어를 생략할 수 있다.애플리케이션과 Elasticsearch 사이의 연동만 설정하면 되므로 관리할 구성요소가 줄어든다.로그 장애 포인트는 Elasticsearch 하나로 줄어듬.유연성데이터 포맷을 애플리케..
최근 연차를 보내던 중 QA 팀으로부터 서비스의 로그인 오류 문의를 받았다.문제의 원인을 조사하고 해결한 과정을 기록한다. 문제 상황QA 팀에서는 서비스 로그인이 되지 않는다고 보고했다.로그를 확인해 보니 API 타임아웃이 발생하고 있었다.원인 분석로그 기록 방식API 에러가 발생한 서비스는 로그를 로그 라이브러리를 통해 Elasticsearch에 기록하고 있었는데 동기적으로 기록하고 있었다.이 방식은 Elasticsearch에 문제가 생기면 API 요청이 지연되거나 실패할 수 있는 구조적 문제를 내포하고 있었다.Elasticsearch 상태 점검Elasticsearch는 실행 중이었으나 에러 로그가 기록되고 있었다.스토리지 상태를 확인한 결과, /usr/share/elasticsearch/data 디렉..
안녕하세요. 오늘은 간단한 알림 시스템을 설계해보겠습니다. 설계 방법은 다양하며 서비스 환경에 따라서 달라질(구체화 될)것이다. 요구사항 푸시 알림, SMS 메시지, 이메일 알림 제공 알림의 종류는 더 늘어날 수 있다. 고려할 사항 알림 유형별 지원 방법 연락처 정보 수집 방법 알림 전송 및 수신 방법 알림 유형별 지원 방법 iOS 푸시 알림 → APNS (Apple Push Notification Service) 사용 Android 푸시 알림 → FCM (Firebase Cloud Messaging) 사용 SMS 메시지 → 트윌리오 같은 써드파티 서비스 사용 이메일 → SendGrid 같은 써드파티 서비스 사용 연락처 정보 수집 방법 회원가입시에 전화번호, 이메일 등의 정보를 받아야하고 모바일에 푸시 ..
대규모 System Design을 위한 몇 가지 기본 기능을 간단하게 정리해보자. (대규모 시스템을 설계하기 위해서는 많은 기술들이 필요하지만 이 글에서는 로드밸런서, 메시지 큐, 캐시에 대한 개념을 간단히 정리해보겠습니다) 로드밸런서 로드밸런서는 부하 분산 집합에 속해 있는 웹 서버들에게 트래픽을 고르게 분산하는 역할을 한다. 사용자는 로드밸런서의 공개 IP 주소(public IP address)로 접속한다. 웹 서버는 클라이언트의 접속을 직접 처리하지 않는다. 또한, 서버 간의 통신은 사설 IP 주소(private IP address)를 이용한다. 이렇게 되면, 서버의 확장 및 축소가 쉬워지는데 부하 분산 집합에 웹 서버를 추가하거나 삭제함으로써 필요에 따라 서버의 규모를 확장하거나 축소할 수 있다...
안녕하세요. 오늘은 Kubernetes를 말할때 빠지지않고 등장하는 Helm에 대해서 알아보도록 하겠습니다. Helm이란? Kubernetes 패키지 매니저 도구 다양한 애플리케이션(tomcat, fluentd 등)을 Kubernetes에 쉽게 배포하도록 도와줌 Kubernetes에 애플리케이션을 쉽게 관리(배포, 업데이트) 하도록 도와주는 도구 Helm은 kubectl과 같이 Kubernetes master 노드의 API Server를 통해 애플리케이션을 배포하고 관리하는 일을 수행한다. Helm V2까지는 Kubernetes 환경에 Helm Client(agent)와 연동될 Tiller Server를 설치해야했으나, V3 부터는 Kubernetes API 직접 통신하는 방식으로 변경되었다. Helm이..
안녕하세요. 오늘은 아주 간단하게 AWS 인프라를 구성해보고 로컬 컴퓨터에서 SSH tenneling을 사용해서 Private Subnet 영역에 위치한 서버 컴퓨터(EC2 인스턴스)에 접속하는 것까지 실습해보도록 하겠습니다. 대상 AWS 인프라 구성에 어려움을 겪고 계신 분 VPC, Subnet은 default로만 사용해보신분 기본적인 네트워크 구성을 알고 싶으신 분 목표 조금은(?) 보안을 신경쓰면서 아래와 같은 아주 간단한 인프라를 구성해보자 목차 사용한 AWS 리소스와 간단 개념 인프라 구성에 대한 설명 실습 사용한 AWS 리스소와 간단 개념 사용한 리소스 VPC (Virtual Pricate Cloud) Subnet IGW (Internet Gateway) NAT EC2 AZ (Availabil..
안녕하세요. 오늘은 Github 계정 엑세스 토큰 생성 방법에 대해서 정리해보겠습니다. Github 계정 엑세스 토큰은 언제 사용할까? git을 사용해서 push/clone와 같은 작업을 할때 필요하다. 예를들면, CI & CD 파이프라인을 구축하는데 스크립트에서 특정 저장소를 clone받거나 push하고자 하는 일이 생길 수 있다. 확인 방법 Github 우측 상단에 프로필을 선택한 후, 아래쪽에 Settings를 선택한다. 좌측 하단에 Developer settings를 선택한다. 좌측 메뉴에서 Personal access tokens -> Tokens를 차례로 선택한다. 우측에 Generate new token을 클릭한다. 원하는 옵션을 선택하고 토큰을 생성한다. 모두 즐거운 코딩하세요~
안녕하세요. 오늘은 AWS의 S3, CloudFront, Lambda, Lambda@Edge 기술을 활용하여 이미지 리사이징(작게..)하는 방법에 대해서 알아보도록 하겠습니다. (아래 내용에서는 이미지 리사이징을 위한 코드에 대한 설명은 하지 않고 AWS 서비스를 활용하는 방법을 중심으로 설명합니다.) 목적 다양한 사이즈의 이미지를 클라이언트가 사용할 수 있도록 한다. (썸네일 이미지에 큰 사이지의 이미지를 사용할 필요는 없다. 상황에 따라 그에 맞는 이미지를 사용할 수 있도록 한다.) 요구사항 하나의 이미지를 사용하여 다양한 사이즈의 이미지를 만들어낸다. querystring을 사용하여 이미지 사이즈를 다양하게 요청이 가능하다. s 사이즈 설정 s=100x100 (width, height) q 비율 설..