목록IT/DevOps. Architecture (21)
And Brain said,

오늘은 MSA의 필수 패턴 중 하나인 Circuit Breaker에 대해 알아볼 것이다. MSA(Microservice Architecture)는 애플리케이션의 유연성, 확장성, 유지보수성 등을 향상시키지만, 여러 개의 서비스가 함께 동작하기 때문에 각각의 서비스가 다운되는 상황이 발생할 수 있다. 이러한 문제를 해결하기 위해서 분산 시스템에서 일시적으로 실패한 서비스를 격리하고 복구하는 시스템 전체의 가용성을 높이기 위해 사용되는 디자인 패턴인 Circuit Breaker가 사용된다. 호출된 시스템이 지연이나 에러를 일으키면 Circuit Breaker가 해당 호출을 중지시키고 대체로직을 수행한다. Circuit Breaker 패턴은 일반적으로 세 가지 상태를 가진다. Closed: 서비스가 정상적으로..

최근 인프라와 아키텍처가 클라우드 네이티브 및 마이크로서비스로 가는 추세다보니 그에 맞춰 기업들도 복잡한 환경에서의 보안을 신경쓰게 될 수 밖에 없다. 오늘은 그런 보안 툴들 중 최근 자주 사용되고 있는 HashiCorp사의 Vault에 대해서 알아보고 간단한 환경 구성까지 해보자. Vault는 HashiCorp에서 개발한 오픈소스 암호화키 관리 도구로 Vault를 사용하면 애플리케이션 보안을 위해 중요한 정보인 패스워드, API 키 등을 안전하게 저장하고 관리할 수 있다. Vault는 다양한 기능을 제공하지만, 그 중 가장 중요한 기능은 데이터를 암호화하고 복호화하는 것이다. 애플리케이션 내부에 저장되어 있는 중요한 정보를 Vault를 통해 암호화하고, 필요할 때만 복호화하여 사용함으로써, 정보 유출 ..

오늘은 MSA의 서비스 간 비동기 통신을 위한 미들웨어인 RabbitMQ에 대해 알아보고 실습까지 진행해보자. MSA에서는 각각의 서비스들의 결합도를 낮추고 유연성을 높이기 위해 RabbitMQ, Kafka, Redis같은 메시지 브로커들을 사용한다. 메시지 브로커란 메시지 큐의 일종으로, 다수의 클라이언트 간에 메시지를 전달하고, 중개하는 역할을 한다. 만약, 한 서비스에서 다른 서비스로 데이터를 전송해야 하는 상황에서 직접적인 REST API 호출이 아닌 RabbitMQ를 통해 메시지를 전송할 경우, 발신 서비스는 메시지를 전송한 후에 바로 응답을 반환할 수 있으며, 수신 서비스는 해당 메시지를 수신하여 처리할 수 있다. 이를 통해 서비스 간의 결합도를 낮추고, 장애나 부하 발생 시에도 시스템 전체에..

오늘은 Oracle 사의 VirtualBox를 사용해보도록 하자. VirtualBox는 사용자들이 다양한 운영체제나 미들웨어 등을 가상 머신에서 자유롭게 원하는대로 실행할 수 있도록 해주는 오픈소스 가상머신 소프트웨어다. 자, 그럼 바로 이 VirtualBox의 세상으로 여행을 떠나보자. 각자의 환경에 맞춰 VirtualBox를 설치해준다. https://www.virtualbox.org/wiki/Downloads 설치된 VirtualBox를 실행하여 이런 화면이 나왔다면, 도구 -> 네트워크로 들어간다. Host-only Networks 만들기 NAT Networks 만들기 이러면 VirtualBox의 기초 네트워크 세팅은 끝났다. 이제 가상머신을 만들어보자. 다시 첫 화면에서, 새로만들기 우분투 이미..

프로그래밍에서 변하지 않는 것을 찾기란 쉽지 않다.그런데 도대체 변하지 않는 것들은 왜 필요한 걸까?Redux에서는 변하지 않는 상태 객체를 저장함으로써 시간을 달려 과거로 갈 수 있다.이는 아래에서 다시 설명하도록 하겠다.자, 오늘은 이 불변성의 목적과 이점에 대해 얘기하고자 한다.먼저, 불변성에 대해 알아보자.불변성이란, 변하지 않는 성질이다.이게 끝이다.프로그래밍적으로 좀 더 자세히 말하자면, 변수 영역의 값은 변하지 않고 값을 재할당할 시에 참조하던 메모리 주소값만 변경시키는 것이 불변성을 가진 변수다.이제 Java의 String에 대해 살펴보자.Java의 String은 불변하는 참조타입이다.String 객체는 따로 String constant pool에서 관리하는데 이는 Heap의 영역에 할당돼..