2025/06 4

[Spring] application.yml과 docker-compose로 dev/prod 환경 분리

프로젝트에서 개발환경과 배포환경이 달라짐에 따라서 설정 파일을 분리해야 하는 경우가 있습니다.docker로 애플리케이션 환경을 구성할 경우에는 local에서는 db (redis, mariadb..)만 컨테이너로 구성하고, production 환경에서는 RDS와 같은 외부 db 서버를 따로 구축하지 않는다고 가정하고, spring boot까지 함께 DockerFile을 통해 빌드하고 띄울 수 있습니다. 대략적인 아키텍처를 설명드리고, application.yml, docker-compose 파일을 분리하는 과정에 대해 설명드리겠습니다. Architecture docker-compose-dev.ymlmysql, redis만 container로 구성합니다. 외부로 노출되서는 안 되는 db 접속정보, 외부 포트..

Java/Spring 2025.06.29

[MariaDB] MariaDB Client/Server 관점에서의 LOAD DATA INFILE vs LOAD DATA LOCAL INFILE 명령어 비교

매우 빠른 시간 안에 csv 파일을 db에 import 하기 위한 명령어인 LOAD DATA INFILE 명령어에서 LOCAL 키워드를 붙여야 하는 상황과 붙이지 않아도 되는 상황에 대해서 알아보려고 합니다. LOCAL 키워드 필요 유무를 알기 위해서는 DB Client와 Server에 대해 숙지하고 있어야 합니다. 본론으로 넘어가기 전에 DB Client/Server의 개념에 대해 간략하게 먼저 설명드리겠습니다. MariaDB Server/ClientMariaDB Server: DB를 실제로 실행하고 데이터를 저장/관리하는 프로그램 (mysqld 프로세스)MariaDB Client: DB 서버에 접속해서 명령어(SQL)를 보내는 프로그램 (mysql, mariadb, JDBC, Workbench) m..

Database 2025.06.23

[Linux] 리눅스 마스터 2급 합격후기 및 공부법 (전공자)

오늘은 오랜만에 리눅스 마스터 2급 자격증 후기로 포스팅을 작성하려고 합니다. 리눅스 마스터는 다음과 같은 자격증입니다. 프로젝트 배포 환경의 OS가 Linux이고, 업무 시에 종종 Linux 명령어를 다뤄야 하는 경우가 있습니다. 그래서 관련 지식도 터득할 겸 준비하게 되었습니다. IT 관련 전공자이지만, Linux OS 관련하여 기본적으로 가지고 있는 사전 지식은 전무한 상태였습니다. (netstat, ps, cd, ls, chmod, tar, df .. 등 기초적인 지식만 아는 상태) 어떠한 방식으로 공부했는지 1, 2차로 나눠서 설명드리겠습니다. 1차 1차는 온라인 시험으로서 오픈북 시험이며, 정해진 기간에 60분 동안 50문제를 풀어야 합니다. 서칭을 통해 해당 자료를 기반으로 chro..

자격증 2025.06.16

[Elasticsearch] ES cluster(2 node) 구조에서의 데이터 정합성 이슈

회사 프로젝트에서 장비의 실시간 통계 정보를 저장하기 위해 Elasticsearch 검색엔진을 활용합니다. 단일 node를 가지는 standalone 구조에서는 primary, replica shard가 각각 1, 0으로 세팅되어 있으며, 클러스터 구조(2 node 이상) 에서는 5, 1로 세팅되어 있습니다. (ES 1.7.x 기준이며 템플릿 설정에 따라 다를 수 있습니다.) Failover를 위한 HA 구조 (ES 1(master), ES 2(backup) 에서 데이터의 정합성 이슈가 발생하였습니다. 해당 이슈에 대해 대략적인 내용을 설명드리겠습니다. 이슈 발생 상황장비의 CPU, Memory, Port Usage, Connectivity 정보와 같은 통계 정보를 일정 주기에 맞춰서 ES에 저장합니다...