반응형

전체 글 83

MSA Transaction 전략 (LLTs) - SAGA 패턴

MSA의 Transaction 이란 MSA(Microsoft System Architecture) 컨텍스트에서 트랜잭션은 단일 작업 단위로 취급되는 작업 시퀀스를 말함 MSA에서 트랜잭션은 분산 시스템 전체에서 데이터 일관성과 무결성을 보장하는 데 사용된다. 예를 들어 거래에 한 은행 계좌에서 다른 은행 계좌로 돈이 이체되는 경우 거래가 올바르게 완료되고 돈이 이체되는지 확인되어야 함. 트랜잭션 중에 네트워크 오류 또는 데이터베이스 오류와 같은 오류가 발생하면 트랜잭션을 원래 상태로 롤백하여 데이터가 일관되고 정확하게 유지되도록 해야 함. 이는 오류를 견디고 데이터 일관성과 무결성을 보장할 수 있는 안정적이고 강력한 분산 시스템을 구축해야 한다는 말 SAGA 패턴이란 1987년 발간된 SAGAS라는 제목..

개발 일지 2023.04.16

Kafka 압축 방식 성능 평가

개요 Kafka는 대용량 메시지 처리를 상정하고 개발 된 시스템이다. Kafka는 토픽으로 전송 받은 메시지를 로그 형식으로 저장하고 있으며, 이를 압축하는 기능을 제공한다. 3가지 압축방식을 지원하는데 압축에 따라서 메시징 성능에 영향을 끼친다. 압축 방식 Snappy Google에서 C++을 사용해 개발한 압축 라이브러리 적정 수준의 압축률에 빠른 압축 및 해제를 목표로 개발됨 일반적으로 초당 250MB 압축 CPU 사용률이 상대적으로 적고 빠름 압축률은 상대적으로 낮음 Gzip UNIX 시스템에서 쓰이던 압축 프로그램을 대체하기 위해 개발됨 무손실 압축 지원 ZIP과 같은 DEFLATE 알고리즘 사용 여러 파일 압축을 지원 안해서 tar와 같이 사용됨 Lz4 빠른 무손실 압축 및 해제 속도를 목표로..

개발 일지 2023.04.13

#5 와우 경매장 데이터 적재

개요 와우 경매장 데이터를 한 시간마다 데이터를 GET해서 kafka로 publish 하며, publish 된 데이터를 sink connector를 통해 MongoDB에 raw data를 적재하는 프로세스에 대한 설계 및 구현 project 소스: https://github.com/p-bear/data-collect-server 프로젝트 - spring boot project - spring-kafka를 통한 producer 구현 - Logback을 통한 로깅 - Java HttpClient를 통한 REST 통신 CI / CD - Jenkinsfile을 통한 빌드 관리 - Dockerfile을 통한 이미지 빌드 Connector - Kafka-connect를 통한 connector 추가 및 관리 - Mo..

#4 MongoDB 설치

개요 MongoDB는 오픈소스로 공개된 NoSQL database이다. 가장 큰 특징은 RDBMS와 다르게 사전 구성된 스키마가 필요하지 않다는 점입니다. 매우 유연하게 데이터를 CRUD 할 수 있으며, DB 엔진인 wired-tiger에서는 일부 트렌젝션 기능도 가능하다고 알려져 있습니다. 이번에 구성할 시스템에서, 외부 데이터를 가져와서 저장할 목적을 가지고 있습니다. 외부 데이터의 구성을 핸들링할 수 없기 때문에, RDBMS 시스템보다는 보다 유연한 NoSQL 진영의 데이터 베이스를 사용하려 합니다. 또한 업무적으로 MongoDB를 이미 사용하고 있기 때문에 조금 더 쉬울꺼란 생각도 있습니다. 설치 wget -qO - https://www.mongodb.org/static/pgp/server-6...

#3 Confluent Platform 설치

개요 Confluent Platform은 kafka 기반의 관리 플랫폼이며, 데이터 파이프라인 구성, 스트리밍 애플리케이션을 쉽게 구축 및 관리할 수 있게 해 준다. 아파치 카프카의 최초 개발자들이 만든 회사이며, 카프카를 활용한 시스템을 구축할 때 최고로 평가받고 있다. 이를 활용해서 event 기반 아키텍처를 구성해보려 한다. Confluent Platform 설치 Confluent Hub 설치 curl http://client.hub.confluent.io/confluent-hub-client-latest.tar.gz --output confluent-hub-client-latest.tar.gz tar xzfv confluent-hub-client-latest.tar.gz sudo vi ~/.bas..

#2 Jenkins를 통한 CI/CD 환경 구축 with docker

개요 Jenkins는 개발자의 CI/CD를 지원해주는 서비스이다. Jenkins를 통해 빌드 및 배포환경을 구성할 것이다. 편리한 관리를 위해서 Jenkins는 docker로 설치한다. CI / CD Flow CI 소스는 깃헙으로 관리하며 젠킨스를 통해 빌드를 진행하고 도커허브에 빌드된 이미지를 관리한다. (+추후 테스트 자동화도 넣을 수 있으면 좋을 듯) CD jenkins를 통해 배포할 타겟 설정을 하고 도커허브에서 이미지를 받아와서 deploy한다. Docker 설치 // 설치 sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin // ..

#1 데이터 스트리밍 시스템 구축 기획

개요 데이터 스트리밍에 대한 공부를 어느정도 진행했습니다. 배운걸 써서 재밌는걸 만들어보고 싶어서, 홈 서버에 해당 서비스를 구축해보려합니다. 계획은 Confluent Platform을 통해서 kafka의 메시지 큐를 활용해서 데이터를 스트리밍 하고, 해당 정보를 db 같은 저장소에 쌓은 뒤 API 서비스를 제공해서 client에 제공합니다. 컨텐츠로는 지인의 요청으로 선택된 블리자드 developer API를 활용해서 특정 게임의 경매장 정보를 client에게 제공하는 것입니다. reference가 되는 사이트도 참조해 보려합니다. 기본적으로 서버에 개발환경 세팅부터 구축하는 경험을 포스팅에 담을 예정입니다. Plan 간단하게 설계해본 구성입니다. 구축하면서 변할 가능성이 높습니다. 기본 구현 사항 b..

#7 홈 미디어서버 구축

개요 nextcloud를 통한 파일공유 시스템을 구축했습니다. 이 부분을 조금 더 활용해 보기위해 미디어서버를 구축해서 동영상 스트리밍을 즐겨보려합니다. 계획은 plex 미디어 서버를 설치하고, kodi에 plex 애드온을 붙여서 동영상 스트리밍을 해보려 합니다. plex 미디어서버 설치 echo deb https://downloads.plex.tv/repo/deb public main | sudo tee /etc/apt/sources.list.d/plexmediaserver.list curl https://downloads.plex.tv/plex-keys/PlexSign.key | sudo apt-key add - apt를 통한 자동업데이트 관리를 위해서 repository를 서버에 등록합니다. sud..

#6 NextCloud 설치 및 세팅

System Requirements 개인 홈 서버에 NextCloud 설치를 해보려 합니다. 우선 설치 요구사항에 대해서 먼저 살펴보려 합니다. 도커를 통해 all-in-one 방식도 있는 것 같지만, 개인적으로 도커로 로컬파일에 대한 접근 및 컨트롤이 쓸데없이 복잡하다고 느껴져서, 직접 설치를 진행하려 합니다. 우선 시스템 요구사항을 확인하여 추천사항으로 설치를 진행하려 합니다. Platform Options Operating System (64-bit) Ubuntu 22.04 LTS (recommended) Red Hat Enterprise Linux 8 (recommended) Debian 11 (Bullseye) SUSE Linux Enterprise Server 15 openSUSE Leap 1..

#5 NextCloud vs OwnCloud

Cloud Storage Service 란 많이 사용되는 의미로는 공용 인터넷이나 전용 사설 네트워크 연결을 통해 액세스 가능한 스토리지를 서비스 형태로 제공하는 것을 말합니다. 풀어서 이야기하자면 네트워크를 통해 접근 가능한 스토리지인데 이를 서비스화 시킨 것입니다. 지금은 많이 안 쓰이는 것 같지만 비슷한 기술로 NFS(Network File System)라는 기술이 있습니다. 네트워크망내 file system을 자신의 파일시스템에서 사용가능하도록 만들어졌습니다. 이러한 네트워크망내 스토리지 시스템들위에 사용자 및 관리자의 접근이 용이하도록 서비스형태로 발전시킨 것이 Cloud Storage Service입니다. 많이 사용되는 서비스로 구글 스토리지, AWS 스토리지 등 서비스들이 있습니다. OwnC..

반응형