thinking of SNOWMERAK

폴리글랏이란 무엇인가

아니 근데

아니 근데 왜 다들 요즘 서비스 아키텍처 구상하면서 큰 의문이 들었습니다. 규모가 조금이라도 큰 조직이면 자바나 스프링 강박증이라도 없었다면 높은 확률로 각자가 쓰고 있는 기술 스택이 다를 것입니다. 제가 느낀 위화감이 그것이었습니다. NodeJS, PHP, Java, Go, C++(?) 등으로 이루어진 API 및 웹소켓 서버들이 있습니다. 이 서버들에 대한 공통된 모듈에 대해 항상 큰 의문이 있었습니다. 같은 솔루션에 대한 …

왜 더 좋은 NIC로 바꿨는데, 네트워크 성능이 안 좋아지죠?

개요

그러게나 말이에요. 왜 사람 힘들게 만들까 미리 말씀드리지만, 저는 네트워크 엔지니어가 아니라 백엔드 엔지니어로서 짧은 시간 안에 이슈를 체크 및 리포트 중이라 조금이라도 깊게 들어갔을 때 틀렸을 수 있으니 크로스체크 부탁드립니다. 개요 무슨 일이 있었나 어쩌다 보니 현재 있는 조직에서 특정 서비스가 Tx 성능이 피크 타임에 부족하다는 의견이 있었고, 그로 인해 해당 서비스의 서버 그룹에 대해 NIC Bonding을 하는 것으 …

아키텍처의 퀀텀

퀀텀이란 무엇인가?

퀀텀이란 무엇인가? 퀀텀은 라틴어 ‘quantus’에서 유래했으며, ‘얼마나 많은’, ‘양의’를 의미합니다. 이외에도 사전 상에서 다음과 같은 의미를 찾을 수 있습니다. (물리학) 양자: 더 이상 나눌 수 없는 에너지나 물질의 최소 단위. (일반적으로) 최소량, 일정량. 갑작스럽고 중요한 도약을 의미할 때도 사용 아키텍처에서의 퀀텀 아키텍처에서는 사전적 의미의 최소량의 의미를 가지고 쓰이게 됩니다. 일반적으로 한번에 배포될 수 …

Flutter 설치

개요

개요 flutter를 설치하는 걸 어려워 하시는 분들이 적잖이 계신 것같아 작성합니다. OS 별로 설치 방법 Windows Script를 이용해서 Written by Gemini. PowerShell 스크립트입니다. 아무 곳이나 get_flutter.ps1같은 파일을 만들어 아래 스크립트를 붙여넣기 하여 저장하고 실행합니다. 그럼 버전을 입력해야하는데, flutter 아카이브에서 확인 후 적절한 버전을 입력하면 됩니다. # …

요청 수를 줄이고, 캐시 수용량은 늘리기

valkey?

valkey? 여전히 valkey보다 redis가 더 익숙한 분들이 계실 겁니다. valkey는 Redis Inc.의 redis에 대한 라이센스 변경 및 독점적 지위 확보 시도에 대한 반발로 redis 7.2.4를 베이스로 추가 개발되고 있는 레디스 대체제입니다. 현재는 레디스보다도 먼저 8.0 버전을 출시하는 등 굉장히 활발하게 개발 및 유지보수 되고 있습니다. 당연한 이야기로 레디스의 포크인 만큼 레디스와 동일하게 다양한 …

강한 일관성과 최종 일관성

잠재적인 데이터 불일치 문제

잠재적인 데이터 불일치 문제 MSA는 개발 및 배포의 유연성, 기술 스택의 다양성, 확장성, 장애 격리 등 다양한 장점을 제공하지만, 그로 인해 트레이드 오프되는 단점들도 분명히 존재합니다. 그 대표적인 부분이 비즈니스 로직 오류, 사용자 경험 저하, 심각한 경우 금전적 손실까지 야기할 수 있는 중요한 문제인 잠재적인 데이터 불일치 문제일 겁니다. 이 문제는 다양한 이유로 발생할 수 있지만, 바로 생각나는 이유로는 다음과 같은 …

로그 스트리밍으로 서비스 구성하기

배경

배경 로그도 남기고, 이벤트도 남겨? 서비스를 쭉 구성하다보니 이런 생각을 했습니다. 어차피 로그는 남긴다. 필요한 유저 행동에 대해 이벤트르 발행한다. 그러면 각 서비스가 로그에서 필요한 걸 가져가서 상태 변화를 기록하면 되는 것 아닐까? 뭣하러 굳이 이벤트를 별도로 발행하지? 어차피 모두 kafka같은 메시지 브로커를 탈텐데? 왜 굳이 2개를 중복으로 메시지 브로커에게 남겨야 하는가가 매우 큰 궁금증이었습니다. 기본적으로 …

PGO를 쉽게 하는 방법이 있을까?

개요

개요 왜 사람들은 PGO(Profile Guided Optimization)을 적극적으로 사용하지 않을까? 저는 이 의문을 예전부터 품고 있었습니다. 생각해보니 프로파일을 저장하고, 가져오는 어떠한 표준화된 프로토콜이 없다는 게 이유로 보였습니다. 사실 쓸 사람들은 어떻게든 쓰고 있겠지만, 저도 처음 PGO를 적용할 때에 어떻게 저장하고 가져와야 할지 고민을 좀 했었습니다. 그래서 이번 글에선 해당 내용에 대한 공유를 하겠습니 …