전체 글
-
데이터 일관성과 메시징: Outbox 패턴과 대안들ANYTHING 2024. 11. 28. 09:41
현대 소프트웨어 시스템에서는 데이터베이스와 메시지 브로커(Kafka, RabbitMQ 등)를 연동하여 데이터를 저장하고 이벤트를 전달하는 작업이 흔합니다. 이 과정에서 가장 큰 과제는 데이터 일관성을 보장하는 것입니다. 데이터베이스에 작업이 성공적으로 기록되었지만 메시지가 유실되거나 중복 전송되는 경우, 시스템의 신뢰성이 떨어질 수 있습니다.이 글에서는 데이터베이스와 메시지 브로커 간의 일관성을 보장하기 위한 대표적인 아키텍처인 Outbox 패턴과 함께, 이를 대체하거나 보완할 수 있는 몇 가지 대안을 살펴봅니다.Outbox 패턴: 데이터 일관성의 기본 솔루션1. Outbox 패턴이란?Outbox 패턴은 데이터베이스와 메시지 브로커 간의 작업을 분리하면서도 일관성을 보장하는 아키텍처입니다. 애플리케이션에..
-
문서자료 작성. 나만 어려운가?ANYTHING 2024. 11. 8. 14:36
배경 및 목적문서를 작성하는 것이 어려움.글을 쓴다는 것에 대해 배운적이 없음.문서를 잘 작성하고 싶음.나만 작성하기 어려운가?문서자료 작성과 관련된 글을 찾다보니, 대부분의 글에서 보이는 문장.대부분의 엔지니어가 코드를 작성하고, 이용하고, 유지 보수하는 업무와 관련한 대표적인 불만이 양질의 문서 자료가 부족하다는 것.현실적으로 대부분의 문서자료는 우리가 스스로 작성해야 함.문서작성이 잘 안되는 이유?문서자료가 중요하다는건 모두가 알지만, 문서자료가 제공하는 이점이 무엇인지 이해를 못하고 있다.문서자료의 작성을 프로그래밍과 별개의 기술로 본다.글쓰기에 자신이 없다.유지보수할 대상이 하나 더 늘어난다.문서자료는 일반적으로 작성자에게 혜택이 돌아가지 않는다.문서자료란?엔지니어가 작업을 끝마치기 위해 작성하..
-
Chat-GPT 장난 아니구나MACHINE LEARNING 2023. 2. 4. 20:03
다이어트에 대해 글을 써 달라고 하니, 아래와 같은 글을 써 줬다. 별다른 고민 없이 주제만 하나 던졌는데, 저렇게 써주다니 대단하다. 왜 요즘들어 여기저기서 난리가 났는지 알거 같다. 건강한 라이프스타일 만들기: 다이어트, 운동 및 진행 상황 추적 가이드 소개 다이어트의 정의 다이어트는 체중 조절, 건강 개선 또는 특정 영양 목표 달성을 위해 음식이나 음료 섭취를 의도적으로 제한하는 것을 말합니다. 여기에는 칼로리 섭취를 줄이고 체중 감량을 촉진하는 데 도움이 되는 균형 잡히고 지속 가능한 식사 계획을 만드는 것이 포함됩니다. "다이어트"라는 용어는 종종 빠른 체중 감량을 목표로 하는 단기적이고 제한적인 식사 계획과 관련이 있지만 잘 계획되고 균형 잡힌 식단은 건강한 체중을 유지하고 전반적인 건강을 개..
-
prestoANYTHING 2022. 5. 19. 17:10
Presto란? facebook 에서 대량의 데이터에 대해 대화형 분석을 실행하기 위해 만든 오픈소스 분산 SQL 쿼리 엔진. TB, PB 단위의 데이터를 분산쿼리를 사용하여 분석할 수 있는 툴 Presto 구성 요소 Coordinator Presto 서비스의 중심. Master 역할 1개만 존재. 하는일 Client 로 부터 요청을 받음. SQL 구문 파싱, 쿼리 플래닝 쿼리를 실행할 Worker 노드 조정 Worker 노드의 활동 트래킹 Worker Slave 역할로 여러개 존재 가능 Coordinator 에서 전달받은 테스크를 수행하고, 데이터를 처리함. 테스크 수행 결과는 Worker 에서 바로 Client 로 전달됨. 프레스토의 쿼리 실행 형태 ANSI-SQL 로 작성된 프레스토에서 실행가능한 ..
-
Re:dashANYTHING 2022. 5. 19. 09:59
Re:dash 란? 클라우드 기반 BI 툴 BI(Business Intelligence) - 데이터를 통합/분석하여 의사 결정을 돕는 프로세스 주요 특징 브라우저 기반 사용이 쉬움 : 쿼리 기반이라 러닝 커브가 적음 시각화 및 대시보드 : 드래그 앤 드랍으로 간단하게 데이터를 시각화 할 수 있음 스케줄링 : 원하는 시간에 자동으로 데이터를 업데이트 함 경고 : 데이터가 특정 조건에 걸릴 경우 알람 발생 가능. Re:dash 의 목적 데이터를 시각화하여 데이터를 이해하는데 도움을 주기 위함. Re:dash 와 kibana 비교 키바나 Re:dash 구조의 차이에서 오는 장단점이 명확함. 키바나는 데이터가 많아도 시각화 과정에서 문제가 발생하는 경우가 적음 Re:dash 는 데이터가 많을 경우 메모리 부족으..
-
Java — 모범 사례 및 권장 사항: 디자인 패턴JAVA 2022. 1. 8. 11:12
출처: https://blog.singular.uk/java-good-practices-and-recommendations-design-patterns-eade30be7965 설계 패턴은 소프트웨어 개발 중에 자주 발생하는 문제에 대한 일반적인 해결책이다. 이러한 솔루션은 우아하고 대부분의 경우 객체 생성, 리소스 할당, 코드 단순화 등과 관련된 다양한 문제를 해결하는 가장 효과적인 방법을 제공한다. 비즈니스 논리에 따라 솔루션 자체를 커스터마이징할 필요가 있는 반면, 그것들이 주어지는 맥락을 유지할 필요가 있다. 설계 패턴은 세 가지 범주로 구분된다. 창조, 객체 생성 중에 발생하는 다양한 문제를 해결하기 위한 솔루션 제공 구조, 더 큰 구조에서 클래스를 구성할 수 있는 방법을 찾아냄으로써 인스턴스화 ..
-
Spock Framework 의 Stub, Mock, Spy 를 간단하게 알아 보자.JAVA 2020. 10. 15. 09:00
Java 는 현재 Class 와 Interface 를 Mocking 하기 위한 다양한 Library 와 Framework 를 가지고 있습니다. Spock 역시 그러한 Framework 중 하나 입니다. 이 문서에서는 Spock 의 다양한 기능 중 Stub, Mock, Spy 에 대해 얇게 알아 보겠습니다. Spock is a testing and specification framework for Java and Groovy applications. What makes it stand out from the crowd is its beautiful and highly expressive specification language. Thanks to its JUnit runner, Spock is compat..
-
Format number using regex in javascriptJAVA 2020. 5. 22. 14:23
일하다 보면, 각종 숫자의 포맷을 맞춰야 하는 경우가 있어서 항상 RegExp 를 만들었는데... 동료가 이런걸 알려 줬다. 역시 사람은 머리를 써야 한다. function format(mask, number) { var s = '' + number, r = ''; for (var im = 0, is = 0; im < mask.length && is < s.length; im++) { r += mask.charAt(im) == 'X' ? s.charAt(is++) : mask.charAt(im); } return r; } console.log(format('XX.XX.XX', 12345678)); // logs "12.34.56" console.log(format('XXX-XXXX', 12345678))..