본문 바로가기

분류 전체보기322

Sharding - 개요 개발자가 샤딩이라는 용어를 접할 수 있는 가장 일반적인 분야는 DB인것 같다. DB 장비(instance) 1대가 감당할 수 있는 수준을 넘어서는 규모의 데이터를 처리해본적이 있다면 샤딩이라는 단어를 들어봤을것이다. 샤딩을 적용하면 전체 데이터가 여러 대의 장비로 분산되며, 이에 따라 자연스럽게 1대의 DB 서버가 받는 부하도 분산된다. 그런데 샤딩이 꼭 DB에만 샤딩이 적용되는것은 아니다. 공유 데이터에 대한 쓰기나 읽기 락 경합을 완화하기 위해 사용되기도 한다. Golang 에서 Map 을 사용한다고 가정해보자. 어떤 데이터를 DB로 부터 조회한 후, Map에 취합한다. 그런데 데이터가 커짐에 따라 속도가 생각만큼 나오질 않아 goroutine을 생성하고 취합을 빠르게 하려고 한다. CPU를.. 2024. 1. 13.
Fan-out, Fan-in - 출처: https://go.dev/blog/pipelines Go Concurrency Patterns: Pipelines and cancellation - The Go Programming Language Go Concurrency Patterns: Pipelines and cancellation Sameer Ajmani 13 March 2014 Introduction Go’s concurrency primitives make it easy to construct streaming data pipelines that make efficient use of I/O and multiple CPUs. This article presents examples o go.dev - 개요 Fan-out은 하나의 .. 2023. 11. 12.
Timeout - 개요 Timeout은 예상되는 시간내에 결과를 받지 못할 경우 오류 상황으로 간주하는 패턴이다. 사실 설명이 필요할까 싶을 정도로 널리 그리고 거의 필수적으로 사용되는 패턴이다. 하지만 그렇다고해서 중요하지 않은것은 아니다. 서비스들이 연쇄적으로 호출관계를 가질 때, timeout을 적용하지 않는다면 하나의 서비스만 장애가 나도 이를 연쇄적으로 호출했던 서비스들은 무한대기를 하게된다. 이때 timeout을 적용하면 하나의 서비스 장애가 전체 시스템 장애가 되는 상황을 방지할 수 있다. - Golang example 간단한 패턴인만큼 곧바로 golang 예제를 살펴보자. 사실 golang 에서는 첫번째 인자로 권장하는 context.Context 덕분에 구현이 굉장히 용이한편이다. func TestTi.. 2023. 11. 11.
볶음밥 - 출처: 백종원 볶음밥: https://www.youtube.com/watch?v=kR77WlHRZrs - 출처: 여경옥 볶음밥: https://www.youtube.com/watch?v=jS4Fy17Fsdk - 출처: 여경래 볶음밥: https://www.youtube.com/watch?v=qFUP_XTvJjo - 출처: 이연복 볶음밥: https://www.youtube.com/watch?v=kCcHAeOiaRI - 재료 밥 1공기, 대파, 달걀 2개, 식용유 4큰술, 진간장 1/2 큰술, MSG 1/4 큰술, 맛소금 1g(1/8) - 요리하기 전에 밥은 반드시 수분이 없는 밥으로 해야한다. 물론 취향차이는 존재하지만 일반적으로 생각하는 볶음밥은 고슬고슬하고 물기가 없는 볶음밥이고 내 취향은 물기가.. 2023. 11. 6.
Throttling - 출처: https://learn.microsoft.com/en-us/azure/architecture/patterns/throttling Throttling pattern - Azure Architecture Center Control the consumption of resources used by an instance of an application, an individual tenant, or an entire service. learn.microsoft.com - 개요 어플리케이션 인스턴스, 개인 테넌트나 전체 서비스에 의해 사용되는 자원의 소비량을 제어한다. 리소스에 로드가 많이 걸리는 상황에서도 시스템이 계속해서 동작하고 서비스 수준 계약을 충족하도록 해준다. - Context and pr.. 2023. 11. 4.
티본 스테이크 기본적으로는 승우아빠의 궁금해요리의 스테이크편을 참조한것입니다. 재료를 최대한 간단하게 하고 내 입맛에 맞게 조정한것입니다. - 재료 필수: 티본 스테이크, 식용유 or 포도씨유, 소금 추가: 버터 - 요리 시작전에 뼈모양 T자를 기준으로 등심, 안심이 붙어있을텐데 두 부위의 굽는 시간을 다르게 (안심이 기름기가 적으므로 등심보다 덜 구워야 한다.)해야하므로 붙은 상태로 구우면 까다롭다. 칼로 고기를 뼈에서 도려낸다. 스테이크에 소금을 치고 1시간 정도 냉장고에 넣어놔야 한다. 이때 봉투나 랩으로 밀봉해서 넣어놓는것이 아니라 그냥 소금을 뿌린채로 넣어놓아 1시간 뒤 꺼냈을 때 겉 표면의 물기가 다 말라야 한다. 고기는 기본적으로 30초마다 뒤집어야 하므로 타이머나 스마트폰을 사용해야함을 인지한다. - 요.. 2023. 11. 1.
Retry - 출처: https://learn.microsoft.com/en-us/azure/architecture/patterns/retry Retry pattern - Azure Architecture Center Learn how to use the Retry pattern to enable an application to handle anticipated, temporary failures when the app tries to connect to a service or network resource. learn.microsoft.com - 개요 Application이 서비스나 네트워크 리소스에 접속할 때, 실패한 연산을 재시도 함으로써 일시적인 오류를 다룰 수 잇게 해주는 패턴이다. Application의.. 2023. 10. 31.
Debounce - 출처: 클라우드 네이티브 패턴 - 개요 Debounce는 함수 호출 빈도를 제한하여 여러 번 호출 발생시 처음이나 마지막 호출만 동작하도록 하는 패턴이다. - Context and Problem 시스템의 작업중에서는 속도가 느리고 비용이 많이 드는 작업이 존재한다. 이런 유사한 작업이 연속적으로 여러 번 발생할때마다 서버가 요청을 처리하면 무거운 작업을 계속 수행해야 한다. - Solution Front-end 개발을 해본적이 있다면 Debounce나 Throttle이라는 용어가 익숙할것이다. 가장 대표적인 예제가 자동완성검색이다. 이를 구현할 때 검색창에 입력 이벤트가 발생할때마다 요청을 서버로 보내면, 서버의 부하가 많이 걸릴 수 있다. 그래서 Debounce 패턴을 이용하여 일정 기간내의 마지막.. 2023. 10. 30.
사케동 간장소스 재료를 최대한 간단하게 하고 내 입맛에 맞게 조정한것입니다. - 재료 양에 비례해서 비율로 준비 -> 물 : 간장 : 설탕 : 맛술 = 2 : 1.7 : 0.5 : 0.5 양파 감자 -> 칼집내서 표면적을 크게 - 절차 물, 간장, 설탕, 맛술에 채썬 양파, 감자를 넣고 양파가 투명해질때까지 강불로 조진다. 양파가 투명해지면 중간불로 조진다. 감자는 건져내서 버린다. 2023. 10. 29.
Circuit Breaker 출처: https://learn.microsoft.com/en-us/azure/architecture/patterns/circuit-breaker Circuit Breaker pattern - Azure Architecture Center Handle faults that might take a variable amount of time to fix when connecting to a remote service or resource. learn.microsoft.com - 개요 Circuit Breaker는 원격 서비스나 자원에 접근할 때 오류가 발생하는 경우 복구에 어느 정도 시간이 걸리는지 알 수 없는데, 이런 경우를 다루는데 유용한 패턴이다. Application의 안정성과 탄력성을 향상 시킨다... 2023. 10. 27.