본문 바로가기

인프라

(9)
Saga 패턴 해당 글은 '마이크로 서비스 패턴' 이라는 책에서 다룬 사가 패턴에 대해 정리하였습니다. 분산 트랜잭션? 마이크로서비스 아키텍처에서 단일 서비스 내부의 트랜잭션은 ACID를 보장하지만, 여러 시스템에 얽힌 트랜잭션은 구현하기가 까다롭기 때문에, 여러 서비스에 걸쳐 트랜잭션을 관리할 수 있는 매커니즘이 필요하다. 예시로 '주문 생성'을 본다면(createOrder()), 소비자 서비스, 주문 서비스, 주방 서비스, 회계 서비스 등 여러 서비스에 있는 데이터에 접근해야 하는데, 여기서 여러 DB에 걸친 데이터의 일관성을 유지할 수 있는 수단이 필요하다는 것이다. 이러한 수단 중 하나가 바로 분산 트랜잭션이다. 널리 알려져 있는 분산 트랜잭션 관리의 사실상 표준으로는 X/Open DTP(Distributed ..
Grafana Loki와 LogQL 에 대해 알아보기 최근에 Grafana Loki 사용법을 익히고, 대시보드 구성을 연구하는데 많은 시간을 들이게 되었다. 이와 관련해 Loki의 개념과 자꾸 헷갈리는 LogQL 문법을 공식 문서 기반으로 정리해보려 한다. Loki란? Loki is a horizontally-scalable, highly-available, multi-tenant log aggregation system inspired by Prometheus. It is designed to be very cost effective and easy to operate. It does not index the contents of the logs, but rather a set of labels for each log stream. 로키는 Promethe..
Nginx를 이용한 로드 밸런싱, 무중단 배포까지의 고찰 로드 밸런싱 적용, 덤으로 무중단 배포까지 왜 로드밸런싱? 로드 밸런싱, 무중단 배포 설계에 대한 내용만을 중점적으로 보여주기 위해 앞 단의 프론트 인프라 구조와 DB Replication 적용 후의 구조는 잠시 생략한다. 로드 밸런싱을 적용하기 전, 웹서버 한대는 WAS 하나를 가리키고 있었다. 이 경우 수많은 요청이 오더라도, 우리는 서버 한대 분량의 부하만을 견딜 수 있었다. 하지만, 놀토의 사용자가 늘고 또 이 사용자들이 동시적으로 혹은 처리 비용이 높은 트래픽이 많아질 경우를 고려할 필요가 있다. 이 때 사용할 수 있는 기술이 로드 밸런싱인데 간단히 말하면 여러대의 서버에 (여러 고려사항을 적용해) 적절하게 요청을 분산하는 기술이다.​ 장점 한 대의 서버의 부하를 분산시킬 수 있다. 한 대의 서..
AWS CloudFront와 S3 구성 2021-07-14 작성 들어가기 전 이 그림을 먼저 보자 Amazon CloudFront? Amazon CloudFront는 .html, .css, .js 및 이미지 파일과 같은 정적 및 동적 웹 콘텐츠를 사용자에게 더 빨리 배포하도록 지원하는 웹 서비스입니다. CloudFront는 엣지 로케이션이라고 하는 데이터 센터의 전 세계 네트워크를 통해 콘텐츠를 제공합니다. CloudFront를 통해 서비스하는 콘텐츠를 사용자가 요청하면 지연 시간이 가장 낮은 엣지 로케이션으로 요청이 라우팅되므로 가능한 최고의 성능으로 콘텐츠가 제공됩니다. 쉽게 말하면 AWS 에서 제공하는 CDN 서비스 캐싱을 통해 사용자에게 빠른 데이터 전송 속도를 제공함을 목적으로 함 전세계 여기저기에 Edge Server를 두고 클라이..
생활코딩 OAuth 2.0 강의와 놀토의 OAuth 개요 나의 서비스가 사용자를 대신해 그들의 서비스의 기능에 접근한다. 사용자로부터 그 사용자가 사용하고 있는 그들의 서비스에 접근할 수 있도록 허가를 받아야 함 근데 사용자 입장에서는 처음 보는 서비스에게 그들의 서비스 인증정보를 맡기긴 무서움 제 삼자가 내 인증정보를 가지고 있는 것임 OAuth 프로토콜을 써보자! 그들의 서비스가 accessToken을 발급해줌 (아이디와 비번이 아님) 나의 서비스가 필수적으로 필요한 기능만 허용함 우리의 서비스는 accessToken를 통해 그들의 서비스를 이용할 수 있음 회원의 아디와 비번을 가지지 않아도 됨 역할 Resource Owner User 우리의 서비스를 이용하는 사용자 우리가 제어하고자 하는 자원의 소유자 나의 서비스를 이용하는 클라이언트 Client ..
Flyway 적용기 2021-07-21 작성 Flyway란? 오픈 소스 데이터베이스 마이그레이션 도구 버전별 DB 스크립트 파일을 열거 해 두면 알아서 SQL 파일을 수행해 주고 DB 변경 이력에 대한 관리를 해 주는 녀석 Flyway와 JPA spring.jpa.hibernate.ddl-auto create, update, create-drop 은 prod 환경에서 절대 비추 validate Entity 와 테이블의 정합성이 맞는지 검증한다. (안맞으면 오류를 냄) 배포 환경에서는 validate 옵션으로 테이블이 변경될 시 애플리케이션을 가동시키지 않고 수동으로 테이블 변경사항을 맞추어야 한다. 현재 우리는 DEV, PROD 두 개의 환경에서 MariaDB를 사용하고 있다. 엔티티가 변경될 때마다 해당 변경 사항을 일일..
CI/CD란, 젠킨스 실습해보기 2021-07-11글 CI (Continuous Integration) 지속적 통합 개발하면서 코드에 대한 통합을 지속적으로 진행 여러 개발자가 작성하거나 수정한 소스를 지속적으로 통합하고 테스트 빌드 및 테스트 자동화 CI를 적용할 때의 흐름 개발자는 자신이 개발한 소프트웨어의 소스코드를 공통된 버전 관리시스템(github 등)에 저장. 소스코드상에 변동이 생기면 버전 관리 시스템에서는 CI 툴로 소스코드 변경 알림 CI툴에서는 변경된 소스코드를 대상으로 Build, Test, Merge를 진행 이 과정들이 완료되면 슬랙, 카카오톡, 메일 등을 통해 통합 결과를 알림 CD (Continuous Delivery, Continuous Deployment) 지속적 배포 애플리케이션이 항상 신뢰 가능한 수준에..
Docker란 2021-07-11글 도커란? 컨테이너 기반의 오픈소스 가상화 플랫폼 다양한 프로그램, 실행환경을 컨테이너로 추상화한, 동일한 인터페이스를 제공해 프로그램의 배포 및 관리를 단순화하게 해줌 어디에서든 실행 가능하도록 해줌(조립컴, AWS, Google Cloud) 특징 확장성 이미지만 만들어 놓으면 컨테이너는 그냥 띄우면 됨 서버에 서비스 하나 더 띄울라면 run 명령어로 간단하게 해결 표준성 도커를 사용하지 않는 경우 ruby, nodejs, go, php로 만든 서비스들의 배포 방식은 각각 다름 컨테이너라는 표준으로 서버를 배포하므로 모든 서비스들의 배포과정이 동일 이미지 이미지에서 컨테이너를 생성하기 때문에 반드시 이미지를 만드는 과정이 필요 이미지를 저장할 곳이 필요 설정 보통 환경변수로 제어 하..