전체 글(33)
-
[Architecture] CQRS 패턴
CQRS란?CQRS(Command Query Responsibility Segregation)는 명령(Command)과 조회(Query)의 책임을 분리하는 아키텍처 패턴이다.전통적인 시스템은 동일한 데이터 모델과 경로를 통해 읽기와 쓰기를 처리하지만, CQRS는 이를 분리하여 각기 독립적인 모델로 관리한다.복잡한 도메인 로직이 존재하거나, 읽기 성능의 최적화가 중요한 시스템에서 효과적으로 사용된다.CQRS의 구조Command 모델데이터의 변경을 담당한다. 생성, 수정, 삭제와 같은 작업이 여기에 포함된다. 복잡한 비즈니스 로직이나 도메인 규칙이 이 모델에 포함되는 경우가 많다.Query 모델데이터의 조회를 담당한다. 사용자 화면에 데이터를 빠르게 제공할 수 있도록 최적화된 구조를 가진다. 도메인 로직은 ..
2025.04.24 -
[Architecture] Event Sourcing
이벤트 소싱(Event Sourcing)이란?이벤트 소싱(Event Sourcing)은 애플리케이션의 상태를 단순히 현재 상태로 저장하지 않고, 상태 변경을 일으킨 이벤트의 순서대로 저장하여 전체 상태를 재구성하는 아키텍처 패턴이다.각 이벤트는 “무엇이 언제 일어났는가”에 대한 정보를 담고 있으며, 이 흐름을 통해 현재 상태를 유추할 수 있다.전통적인 CRUD 방식은 데이터의 최종 상태만 저장하지만, 이벤트 소싱은 모든 변경 이력을 남기기 때문에 시간의 흐름에 따른 변화 과정을 추적할 수 있다.이벤트 소싱의 예시자막 편집 시스템을 예시로 들 수 있다.사용자가 자막을 추가, 수정, 삭제할 때마다 각각 하나의 이벤트로 저장된다.자막_추가됨(내용="Hello", 시작=00:00:01, 끝=00:00:03)자막..
2025.04.24 -
[Metabase] 데이터 모니터링 툴
걍력한 데이터 모니터링 툴사내 데이터 분석 및 집계를 할 일이 필요해서 찾아보던 중 Metabase라는 툴을 알게 되었다.긴 말 필요없이 어떻게 사용하는 건지 알아보자.docker 이미지 받아오기dockerhub에서 metabase 이미지를 pull 받을 수 있다.M1에서의 문제 발생docker pull metabase/metabase:latest를 했을 때 docker desktop의 image 목록에 다음과 같은 경고 메세지가 나타났다.이 얘기는 현재 이 이미지는 AMD64 아키텍처에서 실행되도록 빌드하는데, 너는 AMD64가 아니라는 뜻이다. 그렇기 때문에 내 M1 환경에 맞추기 위해 ARM64 아키텍처로 된 이미지가 있는지 찾아보았다.멀티플랫폼 버전의 이미지를 찾을 수 있었다(근데 베타 버전은 맘..
2025.03.28 -
[MySQL] DBeaver 연결 시 Public Key Retrieval is not allowed 문제
갑자기 DB 연결이 안된다.이번에 문제가 발생해서 DB를 새로 설치하였다. 그런데 갑자기 다음과 같은 에러가 발생했다.무슨 일인가 싶어서 찾아봤더니 MySQL 8.0 이상의 버전에서 세팅을 다르게 해줘야 한다고 한다. 바로 따라해 보았다.해결해보자.연결이 불가능해진 DB를 오른쪽 클릭한 후 Edit Connection을 누른다.그 다음 사진에 보이는 Driver properties 탭을 선택한 후 두 개의 설정을 변경해준다. 그 다음 왼쪽 아래의 Test Connection 버튼을 클릭했을 때 연결이 잘 되었다면 성공!
2024.06.03 -
[Elasticsearch] Sharding and scalability
Sharding 이란 샤딩은 인덱스를 더 작은 조각으로 나누는 방법을 뜻한다. 각 조각을 샤드라고 부른다. 샤딩은 인덱스 레벨에서 수행된다. 주 목적은 데이터 볼륨을 수평적 확장하기 위함이다. Console에서 확인하기 Kibana를 켜거나 터미널에서 curl로 다음을 실행시켜 보자. pri라고 적힌 컬럼이 보이는데, pri는 "primary shards"의 약자이다. Shards 수 구성 하나의 인덱스는 기본적으로 하나의 샤드로 구성된다. Elasticsearch 7.0 버전부터 디폴트로 1개의 샤드로 인덱스가 구성되고 그 전에는(6 버전 미만) 5개로 구성되었다. 5개로 구성되었던 것을 오버샤딩으로 불렸다.
2023.06.23 -
[Electron] Electron 시작하기
Electron이란 Electron은 JavaScript, HTML, CSS를 사용하여 데스크톱 앱을 구현하기 위한 프레임워크이다. Electron은 Chromium과 Node.js를 사용하여 하나의 JavaScript 코드베이스를 유지하고 Windows, macOS 및 Linux에서 작동하는 크로스 플랫폼 앱을 만들 수 있다. Electron 시작하기 Electron을 시작하기 전에, node와 npm이 깔려있는지 확인해야 한다. $ node -v $ npm -v 위 명령어로 버전 정보를 확인해 보고 버전 정보가 잘 출력되면 깔려있는 것이다. node가 설치되지 않았다면, macOS를 기준으로, homebrew를 설치하고 homebrew를 이용하여 nvm을 설치, 그리고 nvm을 이용하여 node를 설..
2023.05.24