[Spring]JobRunr libary 사용
Spring boot 2021. 12. 19. 21:03

Java에서 백그라운드 Job를 실행시키는 라이브러리 이다. 실행 시키고 잊는 처리를 하기에 접합하다. python에서의 Celery와 같은 역할을 하지만 더 많은 기능을 제공한다. Spring에서의 사용(Maven) org.jobrunr jobrunr-spring-boot-starter 3.1.2 설정 Spring의 application.properties에서 아래 두 항목에 대한 설정해 해주면 SPring 에서 초기화 작업을 해준다. org.jobrunr.background-job-server.enabled=true org.jobrunr.dashboard.enabled=true 만약 여러개의 Runner를 사용할 예정이면 RDB, No-SQL 혹은 queue를 사용하면 된다.→ 참고 @Bean pub..

[Database] DynamoDB GSI 사용
DataBase 2021. 12. 19. 19:38

DynamoDB 제일 중요한 개념이 GSI(Global Secondary Index)인것 같다. 이 개념은 Partition Key(PK)로 여러 노드에 분산된 데이터를 더 빨리 scan하기 위해 도입된 개념이다. GSI는 파티션 내의 partition key와 sort key와는 분리된 개념이라고 생각하면 된다. 이 기능은 광역에서 데이터를 더 빨리 찾기위한 Index라고 이해하면 될것 같다. GSI를 이해하기 위한 간단한 예 상품 데이터를 관리하기 위해 상품의 ID을 partition key로 입고일자를 sort key로 하고 입고자 정보를 포함한 schema가 있다고 가정하면 입고자가 입고한 모든 상품을 검색할 때는 입고자를 기준으로 모든 상품을 찾을 시에는 GSI를 입고자로 설정하면 입고자를 기준..

[DynamoDB] Spring에서 DynamoDB 사용
DataBase 2021. 12. 16. 21:49

Spring boot에서 AWS DynamoDB를 사용하여 CRUD를 하는 법에 대하여 간단히 정리해 보았다. 기타 No-sql DB와 다르게 기능 구현을 쉽게 할 수 있었던것 같다. 본 글의 spring 튜토리얼를 참고하여 작성 되었다. 준비 Local에서 dynamoDB을 docker로 구동하는 방법을 공유 한다.(이렇게 구동시 Key값은 공백으로 연결한다.) version: '3.7' services: dynamodb: image: amazon/dynamodb-local container_name: my-dynamodb hostname: dynamodb restart: always volumes: - ./my-dynamodb-data:/home/dynamodblocal/data ports: - 80..

Windows 에서 Ubuntu on WSL2 개발 환경 세팅(InteliJ 설치)
이모저모 2021. 12. 13. 12:24

Windows 상에서 현존하는 서비스 개발하기에는 약간 힘든 환경적 제약이 존재한다. 대부분 개발 회사들에서는 MAC를 기본으로 개발 환경을 셋팅 한다. 필자의 경우도 MAC를 1년 넘게 사용해 보았지만 Windows의 장점을 버리지 못하고 Windows에서 개발 환경 셋팅에 대해 삽질하고 그것을 정리하려고 한다. WSL 2 이전 버전에서 2버전으로 오면서 커널 자체의 기능상의 경량화와 호환성 면에서 대대적으로 향상되었다. 공식문서 WSL의 자세한 내용은 지단로보트님의 블로그의 글을 참고하시면 될것 같다. 개발환경 구성 InteliJ을 WSL에 설치하고 Host(Windows)에서 구동 할 수 있게 설정. WSL GUI를 Windows에서 구동 할 수 있는 방법은 x11 포워딩 소프트웨어를 사용하여 실현..

PostgreSQL Transaction isolation level
DataBase 2021. 12. 13. 06:35

대다수 DB MS에서는 Transaction의 고립화 수준을 표준에 따르도록 설계되여 있다. 이번 글에서는 그 고립화 수준에 대해 정리해 보자 Transaction isolation level Read Uncommitted Transaction 처리 중이고 아직 Commit 되지 않는 내용도 읽을 수 있다. 이 레벌에서는 Dirty read가 발생한다. Transaction에서 처리하다가 문제 생겨서 roll back 하는 경우 만약 다른 곳에서 roll back한 데이터를 읽는다면 큰 문제가 생길 수 있다. PostgreSQL에서는 이 level을 지원하지만 PGSQL에서 지원하지 않으므로 공식적으로 지원하지 않는 레벨이다. Read Committed 모든 읽은 데이터는 Commit된 데이터를 보장하는..

ORM 장단점
DataBase 2021. 12. 12. 20:51

현재 거의 모든 실무 개발에서 ORM에 대한 의존도가 높다. ORM를 사용함에 있어 얻게 되는 장단점에 관하여 정리해 보겠다. 그리고 SQL 방식의 장단점에 대하여 간단히 알아보자. ORM Pros 객체지항적으로 코드를 구현할 수 있어 직관적이다. 개발자는 모델 자체에만 집중하면 된다. 부수적인 코드를 적게 작성하여 가독성을 높일 수 있다. 재사용, 리팩토링, 유지보수에 용이하다. 다양한 Database의 스위칭이 쉬워진다 SQL에 친숙하지 않은 개발자도 쉽게 개발 할 수 있다. ORM Cons 설계의 복잡도가 올라가면 ORM으로 해결 할 수 없는 부분이 있고 SQL을 직접 튜닝해야 되는 부분이 존재한다. ORM에 너무 의존하게 되면 트러블 슈팅을 해결하기 어렵다. 한 Framework에 의존적이게 된다..

Postgres Failover 방법
DataBase 2021. 12. 12. 20:17

PostgreSQL auto Failover 에 대한 방법을 정리 하였다.(이전 작업에 대한 복구) 구성 : Master, Slave 서버 각 1대. Replication 방법은 PostgreSQL 설치부터 이중화까지 참조 PostgreSQL는 이중화 방식으로 Stream 방식과 WAL(Write Ahead Log) 방식을 지원 한다. https://ssup2.github.io/theory_analysis/PostgreSQL_Replication/ 위의 설명 대로 PostgreSQL 자체적으로 Replication 방법을 제공 하고 있다. 그런데 auto fail over 기능은 제공하지 않는다. 제3의 software를 사용하여 구현햐야 한다. PGPool은 auto fail over 및 load ba..

PostgreSQL 설치부터 이중화까지
DataBase 2021. 12. 12. 20:07

이전에 작업했던 PostgreSQL 이중화 방법에 대한 것을 다시 정리해 보았다. 설치(Ubuntu 기준) 먼저 apt-get을 이용하여 postgresql를 설치 한다. sudo apt-get install wget ca-certificates wget --quiet -O - | sudo apt-key add sudo sh -c 'echo "deb `lsb_release -cs`-pgdg main" >> /etc/apt/sources.list.d/pgdg.list' sudo apt-get update sudo apt-get install postgresql-10 postgresql-contrib-10 PostgreSQL를 설치하면 postgres 사용자가 생성된다. postgres 사용자 비번 설정은 ..