최신 글
-
[Envoy 이해하기] Circuit_Breaker (outlier_detection)
안녕하세요. 오늘은 Envoy 이해하기 3번째 시간으로 envoy에서 서비스 회복성(Resilience)을 위한 설정을 들을 알아보는 시간을 가져보도록 하겠습니다.개발을 하다보면 서비스의 부하를 막기 위해서 RateLimit를 건다던지 장애 전파를 막기 위해서 Circuit Breaker를 추가한다는 일을 많이 하곤 합니다. 이러한 설정은 만약 Java/Kotiln을 사용하신다면 Resilience4j 등을 사용할 수 있습니다.그런데 사실 이러한 서비스 회복성 관련된것은 대부분 네트워크 관련된 것으로써 envoy가 이러한 역할을 해줄 수 있습니다. envoy에 이러한 설정을 맡겨버리면 Service 개발자는 Application 개발에 집중할 수 있게됩니다. 관련된 내용과 설정하는 방법을 오늘은 한번 ..
2025.05.01
-
[proxy] Envoy 이해하기 - Routing
개요안녕하세요. 오늘은 Envoy의 3번째 시간입니다. 이번시간에는 Envoy에서 사용할 수 있는 다양한 Routing 방법에 대해서 실습해보는 시간을 가져보도록 하겠습니다. 예제는 실전에서 주로 사용하는 예제를 기준으로 가져왔습니다.Path 기반 라우팅가장 먼저 Path 기반의 라우팅을 살펴보도록 하겠습니다. Path 기반의 라우팅은 Backend Cluster를 N개 등록하고 path에 따라서 라우팅되는 Cluster를 다르게 가져가는 방법입니다. 해당 방법을 통해서 apigateway 처럼 사용하 수 있습니다. 이 방법을 통해 리버스 라우팅을 할 수 있게됩니다. 각 서비스마다 path를 다르게 가져가는 방법입니다.테스트➜ 02-routing-proxy curl -X GET http://localh..
2025.04.08
-
[proxy] Envoy 이해하기 - 실습 (Listener, Cluster, Route, Filter의 개념)
개요안녕하세요. 이전 포스팅 Envoy 이해하기 - 기본 이론편에서 마지막에 envoy.yaml 파일의 기본 구성을 함께 확인해 보았었습니다. 그때는 잠깐 언급만 하고 넘어가는 수준이었는데요. 오늘은 제대로 한번 해당 파일을 함께 보고 Envoy의 구성을 알아보도록 하겠습니다.Envoy 구성Envoy의 기본적인 아키텍처와 구성요소는 아래와 같습니다.ListenerEnvoy가 수신 대기할 IP와 포트를 정의Filterfilter_chain이란 어떠한 조건으로 요청을 처리할 것인지 정의예를 들어 L4 계층 기반으로 라우팅할지 L7 계층 기반으로 라우팅할지 등의 상위 레벨의 설정Router실제 라우팅의 조건 및 라우팅할 서비스 등을 지정L7 이라면 URL 경로, Header 기반 라우팅 설정이 가능L4 라면 ..
2025.04.05
-
[DynamoDB] DynamoDB Schema Modeling 하는 과정
목차DynamoDB와 같은 Wide Columns DB는 RDB에 비해서 더 확장성(scalability)을 가지는가 ?그거 알아요 ? DynamoDB는 HTTP로 통신한다는거 (RDB 운영 이슈, Transaction, Conflict)DynamoDB에서 사용하는 용어 정리DynamoDB는 사용한 만큼 비용을 냅니다http API 실습히가 - Write 편http API 실습히가 - Read 편제약사항과 그 철학아키텍처 구조 이해하기Schema Modeling 하는 과정개요DynamoDB는 RDB와 그 구조가 다르다는 것을 이전시간들을 걸쳐서 알아보았습니다. 다시 한번 지금까지 나왔던 내용을 되짚어 보면 아래에 나열된 점이 DynamoDB의 특성입니다.확장성을 위해서 Join을 지원하지 않는다HTTP로..
2025.03.29
-
[proxy] Envoy 이해하기 - 기본 이론편
개요마이크로서비스 아키텍처가 보편화되면서, 서비스 간 통신의 복잡성도 함께 증가했습니다. 서비스 간 라우팅, 로드 밸런싱, 모니터링, 보안 등 다양한 과제를 해결하기 위해 등장한 것이 바로 Envoy입니다. Envoy는 쿠버네티스 환경에서 Data Plane으로써 application의 side car로 많이 사용되는데요. 오늘은 이러한 Envoy에 대해서 알아보는 시간을 가져보도록 하겠습니다.Envoy의 탄생 배경Envoy는 원래 Lyft에서 개발되었습니다. Lyft는 수많은 마이크로서비스를 운영하면서 네트워크 관련 문제에 지속적으로 부딪혔고, 기존의 솔루션으로는 문제를 해결하기 어려웠습니다. 이 과정에서 새로운 L7 프록시가 필요하다는 결론에 도달했고, 그렇게 탄생한 것이 Envoy입니다. 이후 20..
2025.03.28
인기 글
-
[Linux] top 명령어로 서버의 상태 파악하기
안녕하세요. 오늘은 linux의 top 명령어어 대해서 분석하는시간을 가져보도록 하겠습니다.TOP 명령어top 명령어는 현재 OS의 상태를 나타내주는 CLI 어플리케이션입니다. 메모리 사용량, CPU 사용량 등을 나타내주며 top를 실행하는 동안에는 주기적인 업데이트로 실시간에 근접한 내용을 보여줍니다. 리눅스에서 top 명령어를 실행하면 아래와 깉이 노출됩니다. 위에는 전체의 요약이 있으며 아래에는 각 프로세스마다 구체적인 내용을 포함하고 있습니다.요약 영역요약 영역은 top에서 상단에 위치하고 있습니다. 이 요약영역은 전체 프로세스가 OS에 대해서 리소스를 어느정도 차지하고 있는지를 알려줍니다. 요약 영역에 나타나는 대표적인 값은 시간, 유저, 로드 에버리지(Load Average), 테스크(Task..
2021.02.23
-
[markdown] mermaid를 이용해서 UML 그리기 - 플로우차트
안녕하세요. 오늘은 mermaid에 대해서 알아보는 시간을 가져보도록 하겠습니다.mermaid란 markdown 문법으로 diagram을 그려주는 라이브러리입니다.mermaid 란 ?mermaid는 markdown으로 UML을 그릴 수 있는 언어입니다.이 mermaid를 이용하면 쉽고 직관적으로 UML을 그릴 수 있습니다.수도 코드를 통해서 작성하기 때문에 다이어그램 뿐만 아니라 수도 코드를 통해서도 흐름을 이해할 수 있다는 것도 장점이라고 여겨집니다.그렇다면 실제로 mermaid를 사용하는 방법에 대해서 알아보도록 하겠습니다.pluginmermaid를 사용하기 위해서는 markdown에 plugin이 필요합니다.editor 별 plugin 리스트를 참조해서 본인이 사용하시는 editor에 플러그인을 ..
2022.01.09
-
[database] 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)
안녕하세요. 오늘은 낙관적 락과 비관적 락의 개념에 대해서 알아보는 시간을 가져보도록 하겠습니다.DB 충돌 상황을 개선할 수 있는 방법database에 접근해서 데이터를 수정할 때 동시에 수정이 일어나 충돌이 일어날 수 있습니다. 우리는 이런 상황을 해결할 수 있도록 코딩을 진행해야합니다. 어떻게 해결할 수 있을까요 ?첫번째, 테이블의 row에 접근시 Lock을 걸고 다른 Lock이 걸려 있지 않을 경우에만 수정을 가능하게 할 수 있습니다.두번째, 수정할 때 내가 먼저 이 값을 수정했다고 명시하여 다른 사람이 동일한 조건으로 값을 수정할 수 없게 하는 것입니다.비관적 락(pessimistic lock)비관적 락은 Reeatable Read 또는 Serializable 정도의 격리성 수준을 제공합니다. D..
2021.07.09
-
[UML] 상태 머신 다이어그램 이해하기
안녕하세요. 오늘은 오랜만에 UML의 시간을 가져보고자합니다. 오늘 알아보고자 하는 UML은 상태 머신 다이어그램입니다. State Machine Diagram (객체 상태 다이어그램) 상태 머신 다이어그램 모델이란 객체의 행동 다이어그램 중 하나입니다. 객체는 특정 상태를 지니며 이 상태는 이벤트와 같은 액션에 의하여 상태는 변경될 수 있습니다. 이러한 객체의 상태와 상태의 변화를 도식화 한 다이어그램이 바로 객체 상태 다이어그램입니다. 외부에 비동기적으로 데이터를 전송하고 이벤트를 수신함에 있어서 응답 확인 처리를하는 시나리오가 있을 수 있습니다. 이럴경우 이를 상태 머신 다이어그램으로 나타낼 수 있습니다. 아래의 이미지를 보시면 명확하게 알 수 있습니다. 아래의 이미지는 전송 완료 상태에서 응답 확..
2021.09.09
-
[기타] 날짜와 시간 표현의 국제 표준인 ISO 8601에 대해서 자세히 알아보자. (RFC3339, ISO8601, JavaTime)
개요먼저 표준화라는것은 사물, 개념, 방법 및 절차 등에 대하여 합리적인 기준을 설정하여 그 기준에 맞추는 것을 말합니다. 표준이 필요한 이유는 생산, 소비, 서비스 등 다양한 분야에서 생산성과 경제성을 높이고자함입니다. 표준화가 되어있는 요소에 대해서는 재활용이 가능하고 서로 이해하는것도 좋습니다. 최근의 좋은 표준의 예시는 in/out port로써 C-Type으로 통일되어가고 있습니다. 기존에 각 제품마다 표준이 달라서 불편했던 생산과 소비에 이제 단일화된 표준으로 편리함을 제공해주고 있지요. 이것이 바로 표준화가 필요한 이유입니다.오늘은 날짜와 시간 표현의 국제 표준인 ISO 8601과 RFC 3339에 대해서 알아보는 시간을 가져보려고합니다. 인터넷 표준에 비추어 볼때 우리가 따라야하는 표준은 I..
2024.07.02