본문 바로가기

전체 글

(7)
Docker Swarm Server Orchestration 오케스트레이션은 마이크로 서비스들을 컨테이너로 만들어 배포할 수 있도록 도와주며, 다음과 같은 다양한 기능들을 통해 서비스를 관리할 수 있게 도와줍니다. 컨테이너 자동 배포 / 배치 및 복제 컨테이너 그룹에 대한 로드 밸런싱 컨테이너 장애 복구 클러스터 외부에 서비스 노출 스케일 아웃(오토 스케일링) 컨테이너 서비스 간의 인터페이스를 통한 연결 및 네트워크 포트 노출 제어 따라서 서버 오케스트레이션을 간단하게 정의하면 여러 대의 서버와 여러 개의 서비스를 편리하게 관리해주는 작업이라고 할 수 있습니다. 오케스트레이션 툴의 종류로는 Kubernetes, Mesos, Docker swarm, AWS ECS 등이 있으며, 각각 특정 상황에서의 장점을 가지고 있습니다. 적당..
[Redis] Redis Sentinel + HAproxy Redis Sentinel Redis Sentinel은 Redis 서버에 대한 상태를 감시하며, Redis Master와 Slave로 구성되어 있다. Master에 장애가 발생할 경우 Slave를 Master로 자동으로 변경하여 FailOver에 대처한다. Redis Master의 상태 체크는 다수결에 의해 결정이 되는데, 이를 위해 Redis Sentinel은 홀수로 구성이 되어야 한다. Redis Sentinel 상태 체크 및 FailOver 과정 Redis Sentinel-1이 Redis Master가 응답이 없다고 Sentinel-2 / Sentinel-3에 알림 - SDown(Subjective Down) Redis Sentinel-2/Sentien-3이 Redis Master와 응답에 성공했다..
[Docker] Jenkins & fabric 목적 Jenkins 도커 이미지에 Python 및 Fabric 추가 개발 환경 : 우분투(리눅스) Docker File # https://docs.docker.com/develop/develop-images/dockerfile_best-practices/ FROM jenkins/jenkins:latest USER root # Pyhton3.x / fabric install # Cache busting :: Always combine RUN apt-get update with apt-get install in the same RUN statement RUN apt-get update && apt-get install -y \ python3 \ python3-pip \ # In addition, when y..
MQTT/AMQP MQTT (MQ Telemetry Transport) MQTT는 경량의 Publish/Subscribe(Pub/Sub) 메시징 프로토콜이다. M2M(machine-to-machine)와 IoT(Internet of things)에서의 사용하려고 만들었다. IoT를 위해서 낮은 전력, 낮은 대역폭 환경에서도 사용할 수 있도록 설계됐다. 또한 MQTT는 저전력, 신뢰할 수 없는 네트워크, NO TCP/IP 기반에서 운용할 수 있다는 장점이 있다. 따라서 소형기기의 제어와 센서 정보 수집에 유리하며 이러한 특징들로 IoT 영역에서 주목받고 있다. MQTT의 특징을 살려서 낮은 적력에서 작동하는 Push 서비스를 만들 수 있다. 모바일 애플리케이션을 위한 메시지 Push 서버로 많이 사용된다. Publish /..
Volatile / Lock Volatile CPU는 최적화를 위해 이미 캐싱한 볏누에 대해서는 메모리까지 다녀오지 않는다. 그러나 멀티 스레드에서는 위의 경우 문제를 발생시키게 된다. A 스레드의 캐시에 변수가 있는데, B 스레드가 변수의 값을 바꾼 경우 A스레드는 올바른 변수의 값을 알기 위해서는 반드시 메모리까지 다녀와야만 한다. 이렇게 '반드시 메모리에서 읽어올 것' 이라고 명시해주는 키워드가 바로 Volatile이다. Lock Lock으로 감싸여진 구간은 락을 획득해야 진입 가능하다(무조건 하나의 스레드만 들어갈 수 있다.) 즉, 스레드끼리 접근 순서가 지켜진다는 의미이다. 보통 자료구조나 알고리즘의 동작에 있어 여러 스레드의 접근을 허용하고 싶지 않은 경우 사용하며, 변수 하나의 값을 보호하기 위해서는 Lock 보다는 (..
ASP.Net Core에서 NSwag 사용하기 사용 이유 Swagger UI 및 Rest API 생성기를 사용하여 유연한 코드 생성 및 관리가 가능하다. 설치 컴파일러 환경 : Visual Studio 2019 NuGet 패키지 관리 대화 상자에서, "NSwag.AspNetCore 설치 서비스 등록 ASP.Net Core 앱에서 Swagger를 추가한다. Startup.ConfigureService 메서드에서 필수 Swagger서비스 등록 public void ConfigureServices(IServiceCollection services) { services.AddDbContext(opt => opt.UseInMemoryDatabase("TodoList")); services.AddMvc(); // Register the Swagger servi..
Dapper.Net - a simple object mapper for .Net Dapper? Dapper는 오픈 소스 Object Relational Mapper(ORM)로 성능과 편의성에 집중하여 다른 ORM에 비해 매우 빠르다. 또한, C# SqlConnector만으로 DB 프로그래밍을 하기에는 번거로움이 많아 Dapper.Net을 사용하여 간단하게 DB 프로그래밍을 할 수 있다. Dapper Install Dapper.Net은 Nuget을 통해 설치가 가능하다. Development Environment VisualStudio 2019 .Net Core 5.0 MS SQL How To Use SQL Connect 기존 C#에서 Database에 연결할 때 사용하는 System.Data.SqlClient 통해 Database에 연결한다. NuGet Packages Microso..