목록DevOps (180)
devops
immutable Infrastructure(불변적 인프라스트럭처) 불변의 인프라스트럭처의 정의는 서버가 설치된 이후 절대 변경되지 않는 형태의 인프라다. 여기서 수정은 기존의 서버를 제거하고 새롭게 만드는 것을 의미하는 것이다. 여기서 '멱등성의 법칙'이 적용된다. * 멱등성 법칙 : 같은 작업을 여러 번해도 결과가 동일, 한번 설정된 서버는 수정 없이 파기되므로 멱등성 보자아 특징 각 서버의 버전은 서로 독립적이며, 두 가지 버전을 실행할 수 없다. 변경이 필요할 때 새버전의 서버를 생성하기 때문에 버전의 문제를 추적할 수 있다. 각 서버의 구성이 일관되기 때문에 다른 서버를 테스트하고 롤아웃하는 것이 쉽다. 서버가 동일하게 유지되므로 예측 가능성을 높일 수 있다. 클라우드 기술과 같으느 상호 의존적..
Lambda AWS가 제공하는 서버리스 FaaS 솔루션이다. 함수의 인스턴스를 실행하여 이벤트를 처리한다. FaaS FaaS는 자체 서버시스템이나, 수명이 긴 서버 어플리케이션을 관리하지 않고 백엔드 코드만 실행하는 것 런타임에 대한 사전 세팅 및 준비가 노필요 기능에는 상태 및 실행 기간과 관련 아키텍처 제한이 많다. 수평적 확장은 완전 자동이며 탄력적으로 공급자가 관리할 수 있다. 기능은 일반적으로 공급자가 정의한 이벤트 유형에 의해서 트리거된다. Lambda 특징 서버를 프로비저닝하거나 관리할 필요없다. 작성한 코드를 백엔드 서비스로 배포할 수 있다. Lambda를 실행하려면 어플리케이션이나 백엔드 서비스의 코드를 작성하고 이벤트 트리거만 정의하면 된다.(Amazon S3 업로드, Dynamo DB..
Apache Kafka 실시간 스트리밍 데이터 파이프라인 및 애플리케이션을 구축하기 위한 오픈 소스, 고성능, 내결함성 및 확장 가능한 플랫폼이다. Apache Kafka는 스트리밍 데이터 저장소다. 스트리밍 데이터를 생성하는 애플리케이션(생산자)을 데이터 저장소에서 스트리밍 데이터를 소비하는 애플리케이션(소비자)과 데이터 저장소로 분리한다. Apache Kafka의 분산 특성으로 인해 확장이 가능하고 노드 장애 시 고가용성을 제공한다. 주로 스트리밍 데이터를 분석하고 이에 대응하는 애플리케이션의 데이터 소스로 Apache Kafka를 사용한다. Apache Kafka 는 레코드, 주제, 소비자, 생산자, 브로커, 로그, 파티션 및 클러스터와 같은 다양한 구성 요소로 구성된다. 레코드에는 키(선택 사항)..
명령과 조회의 책임분리를 의미한다. 쉽게 말해서 명령과 조회를 처리하는 책임을 분리하는 것이 CQRS의 핵심이다. CQRS는 초기 CQS에서 시작하여 확장했다. CQS는 Command Query Separation의 약자다. 시스템에서 처리되는 명령과 조회를 정의하는 핵심 개념이자, 둘을 분리시키는 디자인 패턴이다. 명령은 상태를 변경하는 것이고, 조회는 상태를 반환하는 작업을 의미한다. CQRS와 마이크로서비스 마이크로서비스의 핵심은 서비스별 DB를 각기 다르게 채택하는 것이다. 서비스 성능 향상을 위해 인스턴스를 스케일 아웃하여 여러개로 실행하면 빈번한 명령과 조회 작업으로 리소스 교착상태가 발생한다. 더구나 명령보다 조회 요청이 훨씬 많기 때문에 하나의 서비스 내에 모든 기능을 넣어두면, 조회 요청..
[C813] 마이크로서비스를 구성할 때, 데이터베이스를 꼭 분리해야 하나요? 데이터가 한 곳에 모여있지 않고 중복되어도 괜찮은가요? 모범 사례를 알아보고, 이유를 함께 적어주세요. 서비스별로 데이터베이스를 사용시 이점 (microservices.io) 서비스가 더욱 느슨하게 결합되는 데 도움이 된다. 한 서비스의 데이터베이스를 변경해도 다른 서비스에는 영향을 미치지 않는다. 각 서비스는 필요에 가장 적합한 데이터베이스 유형을 사용할 수 있다. 예를 들어 텍스트 검색을 수행하는 서비스는 ElasticSearch를 사용할 수 있습니다. 소셜 그래프를 조작하는 서비스는 Neo4j를 사용할 수 있다. 서비스별로 데이터베이스를 사용시 단점 여러 서비스에 걸친 비즈니스 트랜잭션을 구현하는 것은 간단하지 않다. 분산..
REST(Representational State Transfer) REST는 HTTP로 소통하는 프로세스 간 통신 규약이다. REST API는 웹에서 사용되는 데이터나 자원을 HTTP URI로 표현하고 HTTP 프로토콜을 통해 요청과 응답을 정의하는 방식이다. 현대 HTTP 메시지의 body는 JSON 형태로 다루는 것이 기본이다. (이 때 HTTP 헤더의 Content-Type 값은 application/json으로 설정) REST의 장점 curl 등의 도구로 간편하게 테스트 가능 요청/응답 통신 지원 시스템 아키텍처가 단순 REST의 단점 요청/응답만 지원 메시지를 주고받기 위해서 클라이언트와 서버가 실행되어야 함 요청 한번에 여러 리소스 조회는 어려움 메소로만으론 한번의 요청에 다양한 작업들을 하..
마이크로서비스도 하나의 프로세스 단위로 실행되기 때문에, 프로세스 통신이라고 보는게 맞다. IPC(Inter-Process-Communication)은 개발 도메인보다 더 대중적으로 쓰이는 용어다. 프로세스 간 통신 서비스와 서비스가 통신하려면 인터페이스가 존재해야하고, 인터페이스가 요구하는 데로 커뮤니케이션해야한다. 동기/비동기 HTTP 프로토콜은 기본적으로 TCP 연결(혹은 UDP)을 만들고 이 위에서 요청에 따라 즉시 응답오는 형태로 구현이 되어 있다. 세상에는 요청에 따른 응답이 즉시 도착하는 커뮤니케이션만 존재하지 않는다. + HTTP는 동기? 비동기? HTTP는 동기적인 매커니즘으로 분류한다. 서로 통신하는 PC는 모두 켜져 있어야하며, 클라이언트는 서버가 응답을 해줄 것이라고 기대하기 때문이..
서버리스 의미 서버리스는 서버가 없다는 뜻이 아닌, 개발자가 서버를 관리할 필요없이 Application을 빌드하고 실행할 수 있도록 하는 Cloud native 개발 모델이다. 서버가 존재하지만, 직접적인 관리가 필요하지 않기 때문에 추상화되었다고도 볼 수 있다. 마이크로서비스와 서버리스의 관계 마이크로서비스는 독립적인 작은 서비스 단위로 배포와 업데이트가 가능하며, API 게이트웨이가 사용자 또는 마이크로 서비스간 API 통신을 지원하는 것이 특징이다. 서버리스는 별도의 서버 구축필요 없이 어플리케이션 개발과 배포를 지원하는 클라우드 컴퓨팅 서비스다. 서버리스는 마이크로서비스 구조의 개발을 위해서 아주 적합한 형태의 컴퓨팅 서비스다. 여러 Function을 구성하고 이들을 독립적인 API로 구성해서 ..
도메인(Domain) 도메인 지식이란 어떤 산업과 분야를 이해하기 위해 필요한 지식을 의미한다. 여기서 도메인은 지식, 영향력, 활동 영역으로 개발에서는 S/W로 해결하려는 문제 영역을 말한다. 도메인 주도 설계(DDD) 하나의 도메인 모델에 대한 이해관계가 각자 다름을 인정하고, 각팀에 적합한 하위 도메인을 설정. 해당 하위 도메인에 대한 맥락을 알고 있는 사람이 따라야할 비즈니스 규칙에 대한 경계를 설정하는 설계방식이다. 도메인 자체와 도메인 로직에 초점을 두고, 데이터 중심의 접근법에서 벗어난다. 보편적 언어를 사용한다. 도메인 전문가와 소프트웨어 개발자 간의 커뮤니케이션 문제를 없애고 상호가 이해가능한 문서와 코드로 구축하는 과정이다. 이로써 통일된 방식으로 소통이 가능해진다. 소프트웨어 엔티티와..
서버리스(Serverless) 서버리스는 적은 예산으로, 빠르고, 쉽게 확장할 수 있으며 관리와 운영을 혼자서도 충분히 할 수 있게 해준다. 서버리스가 단순히 서버가 없는 것이 아닌, 서버에 대한 고민을 안할 수 있게 해주는 것이다. 컴퓨팅 진화 과정 이전에는 어플리케이션을 배포하기 위해서 직접 로컬 서버를 구매해서 구성해야 했다. 그래서 개발자 혹은 기업은 하드웨어와 소프트웨어 모두 구축하고 관리해야하는 불편함이 있었다. 하드웨어를 직접 관리하는 것도 나름의 장점이 있으나, 많은 비용과 부품 관리를 위한 전문지식도 필요했다. 이런 관리의 어려움을 해결해 준 것은 AWS의 EC2 서비스다. EC2로 인해서 하드웨어 관리의 불편함을 해소할 수 있게되었지만, EC2로 구성한 서버의 소프트웨어도 보안과 백업,..