2023/07 6

개발자가 반드시 알아야하는 데이터베이스 - NOSQL vs RDBMS 간단 정리 feat Redis

개요사내에서 분산환경에서 데이터 저장소 선택과 활용이라는 강의를 들었는데, 굉장히 유용한 강의였고, 블로그거리가 많아서 좋았다 ㅋㅋ해당 강의에 대한 요약을 앞으로 2편정도 더 올릴 생각이다.오늘은 강의 초반내용인 RDBMS와 NOSQL의 특징 및 차이에 대해서 아주 간단하게 다뤄본다.RDBMS장점Relation 기반 높은 신뢰성 비교적 높은 성능 비교적 다양한 기능 관리편의성단점비용이 높음Schema 변경 어려움커질수록 느려진다확장성 부족 (처음 시작은 단일 장비 기준으로 만들어짐)NOSQL장점관계없는 데이터 처리에 최적화높은 확장성을 가지는 경우 많음Schemaless단점제한적인 일관성Join, Transaction 미지원관리비용이 큰 경우 있음NOSQL에 대해 자세히확장성/가용성모든 데이터의 신뢰성이..

무중단 배포 진행하기 2023 (3) - 젠킨스 잡 Setting 및 실행파일 확인하기

젠킨스 잡 Setting 아래와 같이 새로운 잡을 생성한다. 설정 완료 후 , 설정한 브랜치에 push을 하면 아래와 같이 자동으로 빌드가 된다. CD(Continues deploy) - 실행 파일 생성하기 수정사항 기존에는 맥 로컬에 Jenkins을 설치하여, 해당 프로젝트를 진행하려 했으나, 맥 로컬의 원격 접속 IP가 재부팅하면 바뀌는 이슈가 있어, Centos7 으로 OS을 변경하였다. (centos7 젠킨스 위치 : sudo vim /etc/sysconfig/jenkins) push을 하면 자동으로 빌드가 되고, 이 파일 위치는 아래와 같다. /var/lib/jenkins/workspace/파일이름 이후 젠킨스 관리 → Tools → Gradle에서 Add Gradle을 한다. https://g..

개발자가 반드시 알아야하는 데이터베이스 - MYSQL에서 쿼리 최적화 하기 (1) - MYSQL Optimizer

개요사내에서 MYSQL 최적화에 대해 강의하는 시간이 있어, 수강하게 되었다.아래 내용은 강의 들은 내용을 간략하게 정리한 것이다.MYSQL Optimizer먼저 Optimizer 란 쿼리 실행 계획을 생성하고 최적화하는 역할을 수행하는 컴포넌트이다.Optimizer을 알아보기 전 MYSQL에 대해 간략히 짚고 넘어가자. MYSQL 서버의 구성도이다.Engine : 클라이언트와의 연결을 관리하는 Connection Management , SQL Parser, Query Optimizer 등 MYSQL에서 행동하는 모든 게 실행되는 곳이다. MEMORY : Engine 실행에 필요한 메모리 Storage Engine : DB의 핵심인 데이터가 저장되는 곳이다.  아래는 쿼리 실행 과정이다.  Optimiz..

스프링 배치 5.0 - 스프링 배치란 (1)

스프링 배치 스프링 배치는 대용량 데이터 처리와 반복적인 작업을 효과적으로 처리하기 위해 개발된 프레임 워크이다. 스프링 배치의 기본 개념과 주요 기능, 그리고 사용하는 방법에 대해 알아본다. 스프링 배치란? 스프링 배치는 스프링 프레임워크의 일부로, 대용량 데이터 처리와 배치 작업을 지원하는 오픈 소스 프레임워크 주로 일괄 처리 작업, 데이터 추출 및 가공, 데이터 로드, 작업 모니터링 및 관리 등의 작업을 수행하는 데 사용 주요 개념과 구성 요소 Job: 스프링 배치의 실행 단위로, 하나 이상의 Step으로 구성된다. Step: Job을 구성하는 단계로, 하나 이상의 Tasklet 또는 Reader-Processor-Writer 패턴을 포함한다. Tasklet: 단일 작업을 수행하는 컴포넌트로, 개발..

Spring boot + JPA 환경에서 Insert 동시 요청 시 처리방법

개요 이전에 회사에서 멀티스레딩 환경에서 동시성 이슈 관련해서 글을 작성한 적이 있다. 그 때는 동시성 이슈 즉 insert 요청이 동시에 온다면 락(LOCK)을 걸어 처리하는 방법을 제시하였다. Spring boot + JPA 환경에서 비관적 vs 낙관적 Lock 선택하기 - https://code-killer.tistory.com/163 사내에서도 해당 방법으로 처리하려던 와중 큰 프로젝트에 참여하게 되었고, 위 이슈는 크리티컬하지 않았기 때문에, 추후 개선 이슈로 놔두었다. 큰 프로젝트가 마무리 되고, 해당 이슈를 다시 살펴보는데, 그땐 생각하지 못했던 의문들이 떠올랐다. "그때 당시에는 동시 요청이 오니까, 일단 락을 걸어 비동기로 처리를 해야겠다." 라고 단순히 생각했었는데 정확히 따지자면, 1..

무중단 배포 진행하기 2023 (4) - profile 간단 설정

개요 대부분의 무중단 배포 관련 블로그에서는 프로필(profile) 설정을 필수로 언급하고 있다. 일반적으로 현업에서는 무중단 배포을 위해 여러 대의 머신(인스턴스)을 사용하고 있기 때문에 이 경우 프로필 과정은 필요하지 않다. 그러나 많은 사람들이 무중단 배포를 사이드 프로젝트로 진행하고 있는데, 이 경우 머신의 개수가 제한되어 있어,단일 머신에서 무중단 배포 환경을 구축하는 상황이기 때문이다. 이런 경우를 위해 2개의 프로필을 생성하여 프로젝트를 다른 포트 번호로 실행하고 있다. application.properties 설정 properties 설정에 spring.config.activate.on-profile=이름 을 추가해야한다. 만약 해당 profile의 DB, PORT 등 설정을 다르게 두고 ..

728x90