일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Entity
- spring kafka
- PAGING
- K8s
- ECS
- transactionaleventlistener
- spring
- kafka
- Spring JPA
- consumer
- JPA
- Spring Data JPA
- Streams
- bean
- git
- Kotlin
- CodePipeline
- mysql
- producer
- AWS
- centos7
- QueryDSL
- topic생성
- entity graph
- offsetdatetime
- CI
- Kubernetes
- cd
- API
- mirror maker2
- Today
- Total
목록Backend Common (19)
Yebali

Kubernetes의 컴포넌트를 크게 분류하면 기능제 제어를 전체적으로 담당하는 Control Plane와 Node로 나눌 수 있다. Control Plane etdc Kubernetes 클러스터가 동작하기 위한 리소스의 구성 정보, 상태 정보 및 명세 등을 key-value형태로 저장하는 저장소이다. 안정적인 동작을 위해 분산해서 저장하는 구조를 가지고 있다. kube-apiservice Kubernetes 클러스터로 들어오는 요청을 가장 앞에서 받아 적절한 컴포넌트로 다시 전달하는 역할을 한다. 대표적으로 'kubectl'을 통해 요청된 명령들이 위와 같은 과정으로 처리된다. kube-scheduler Kubernetes 클러스터는 보통 여러개의 노드로 구성되어 있다. 그리고 Pod를 여러 노드 중 ..
pinpoint란? Pinpoint는 대규모 분산 시스템의 성능을 분석하고 문제를 진단/처리하는 플랫폼으로 네이버에서 2012년 7월에 개발을 시작해 2015년 1월 9일에 오픈소스로 공개한 프로젝트이다. 갓영한 선생님께서도 추천하는 모니터링 프로그램이기도 하다. Collector 설정 각 서버들이 보내는 지표를 수집하는 서버를 Collector라고 한다. 직접 Collector를 설치하는 방법도 있지만 여기서는 Naver Cloud Platform을 사용해 간단히 만들었다. https://www.ncloud.com/product/applicationService/pinpoint NCP에서는 Collector 서버를 Repository라고 부르는 듯하다. Collector 설정은 이게 끝이다. Agent..

Sync/Async, Blocking/Non-Blocking는 면접에 자주 나오면서도 헷갈리기 쉬운 개념 같다. Sync / Async Sync/Async의 차이는 호출되는 함수의 작업 완료 여부를 누가 신경 쓰느냐 이다. Sync Sync는 호출하는 함수가 호출되는 함수의 작업 완료 여부를 신경 쓴다. 호출하는 함수는 호출된 함수의 작업 완료 후 반환되는 값을 기다리거나, 바로 반환되더라도 호출된 함수의 작업 완료여부를 계속 신경 쓴다. 카페에서 아이스 아메리카노를 시키고 픽업하는 곳에서 커피를 기다리고 있거나, 자리에서 진동벨을 보며 커피가 나왔는지 계속 확인하고 있다면 그것은 Sync이다. Async Async는 호출하는 함수가 호출되는 함수의 작업 완료 여부를 신경 쓰지 않는다. 호출된 함수는 작..

공용 객체 지향 프로그래밍이란? 데이터들을 '상태'와 '행위'를 가진 객체로 만들고, 객체들 간의 상호작용을 통해 로직을 구현하는 프로그래밍 기법. 추상화란? 공통 속성이나 기능을 묶어 이름을 붙이는 것. 객체 지향 관점에서는 클래스나 인터페이를 정의하는 것이 추상화 과정. 다형성이란? 다형성이란 하나의 객체가 여러 가지 타입을 가질 수 있는 것. 객체 지향에서 부모 클래스의 참조 변수로 자식 클래스의 인스턴스를 할당할 수 있는 것. open class Parent() class Child: Parent() fun main(args: Array) { val p: Parent = Parent() val c: Child = Child() // 자식 클래스의 인스턴스가 부모 클래스의 참조 변수에 할당될 수 있..

docker-compose란? 여러 도커 컨테이너 애플리케이션들을 정의하고 실행키시키기 위한 툴이다. YMAL을 사용해서 서비스를 정의하고 실행한다. 예제 아래 예제는 Docker공식 docs에 있는 예제이다. redis와 flask를 사용해서 방문 횟수를 계산하는 웹 서비스이다. 1. flask app 작성하기 먼저 docker 컨테이너로 만들 웹 서버를 아래와 같이 정의한다. '/'로 요청이 들어왔을 때 redis의 'hits' key의 value를 1 증가시키며 방문 수를 계산하는 서버이다. 실패할 경우 0.5초 간격으로 총 5회 시도한다. # app.py import time import redis from flask import Flask app = Flask(__name__) cache = r..

분산락이란? 여러 프로세스(서버)가 하나의 공유자원을 접근할 때 동시성 이슈와 같은 데이터의 무결성을 해치는 현상을 막기 위한 기술 중 하나로 DB를 활용해 공유자원의 접근을 제한하는 기술이다. 운영체제의 뮤텍스와 유사하며 Redis를 이용한 구현이 가장 흔하다. Redisson을 사용한 분산락 Redisson은 Jedis, Lettuce같은 Redis 클라이언트의 한 종류로 분산락을 이미 구현된 클라이언트이다. Redisson을 통해 분산락을 사용한다면 아래와 같은 장점을 가질 수 있다. 1. Lock에 타임아웃이 구현되어 있다. Redisson의 'tryLock' 메소드에는 타임아웃을 명시하도록 되어있다. 그렇기 때문에 프로세스가 Lock을 획득하기 위해서 무한정 기다리지 않으며, 획득한 Lock을 ..