본문 바로가기

반응형

분류 전체보기

(405)
[내일배움캠프 TIL] 31일차 - flyway를 이용한 DB 마이그레이션 자동화 로컬환경에서 각자 개발을 할 때,DB 스키마가 변경 된다던지 하는 경우 서로 DB가 달라질 수 있고에러가 발생할 수 있다.그래서 변경될때마다 공유해주어야하는 불편함이있었다. 자동으로 할 수 없을까 했는데 Flyway라는 것을 이용하면협업할 때 유용하게 DB를 자동으로 마이그레이션 해줄 수 있다고 해서적용해보았다. 🚀 오늘의 주제: Flyway를 이용한 DB 마이그레이션 자동화1. Flyway란? (간단한 설명)Flyway는 오픈소스 데이터베이스 버전 관리(Migration) 툴입니다. 형상관리 툴인 Git을 통해 소스코드의 이력을 버전별로 관리하듯이, 데이터베이스 스키마(테이블 구조, 인덱스 등)의 변경 이력을 버전별로 안전하고 체계적으로 관리할 수 있게 도와주는 라이브러리입니다.💡 왜 도입했을까?..
[내일배움캠프 TIL] 30일차 - Arch unit 프로젝트에 Arch unit을 적용하기 위해 공부를 하고 정리해보았습니다. 1. ArchUnit 개념 🎯목적: 기능 테스트가 아닌 '오타, 네이밍 컨벤션, 3계층 설계 규칙'등 을 자동 검증하는 툴.CI 입구 컷: 규칙 위반 시 빌드가 실패하여 잘못된 코드 유입을 막음.-> 기본적으로 Juit 테스트 하듯이 하는데, CI에서 테스트 돌릴 때 에러가 있으면 걸릴 수 있는 구조입니다.📦 의존성 설정 (Root build.gradle)dependencies { testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'com.tngtech.archunit:archunit-junit5:1.4.2..
[내일배움캠프 TIL] 29일차 - 테라폼 (Terraform)에 대해 오늘은 테라폼에 대해 강의를 들었습니다.테라폼이란 것을 처음 알게되었고,코드로 인프라를 관리할 수 있는 유용한 도구란 것을 알았습니다. 🏗️ 1. 테라폼(Terraform)이란?한마디로 "인프라를 코드로 만드는 도구(IaC: Infrastructure as Code)"입니다. 클릭 몇 번으로 서버를 만드는 대신, 설정 파일을 작성해서 실행하면 AWS, Azure 같은 클라우드 자원을 자동으로 생성해 줍니다.❓ 왜 쓰는가?속도와 효율: 수백 개의 서버를 클릭으로 만드는 건 불가능에 가깝지만, 코드는 복사-붙여넣기로 순식간에 가능합니다.히스토리 관리: 누가, 언제, 무엇을 바꿨는지 Git처럼 코드로 기록이 남습니다.재사용성: 한 번 잘 짜놓은 코드는 다른 프로젝트에서도 그대로 쓸 수 있습니다.실수 방지: ..
[내일배움캠프 TIL] 28일차 - CQRS 오늘은 CQRS에 대해 정리해보았습니다. 1. CQRS란 무엇인가?CQRS는 Command Query Responsibility Segregation의 약자로, 우리말로 하면 "명령과 조회의 책임 분리"라는 뜻입니다.Command (명령): 시스템의 상태를 변경하는 작업 (Create, Update, Delete).Query (조회): 시스템의 상태를 반환하는 작업 (Read).보통은 하나의 도메인 모델로 이 두 가지를 다 처리하지만, CQRS는 "데이터를 쓰는 모델"과 "데이터를 읽는 모델"을 아예 찢어버리자는 전략입니다.2. 왜 쓰는 걸까? (도입 배경)보통 조회가 복잡해지면(Join이 많아지거나 계산이 필요할 때) 성능이 떨어지는데, 이때 명령(CUD) 로직까지 섞여 있으면 코드가 스파게티가 되고 ..
[내일배움캠프 TIL] 27일차 - Saga pattern(사가 패턴) MSA에서 중요한 Saga 패턴에 대해 정리해보았습니다. 🏗️ 사가 패턴 (Saga Pattern) 이란?사가 패턴은 마이크로서비스 아키텍처(MSA)처럼 데이터베이스가 분산되어 있는 환경에서 데이터 일관성(Data Consistency)을 유지하기 위해 사용하는 핵심 디자인 패턴입니다.문제 상황: 서비스마다 DB가 따로 있어서, 기존의 단일 DB 방식인 ACID 트랜잭션을 사용할 수 없음. (주문은 성공했는데 결제가 실패하면? 난감하죠.)-> ACID가 뭐야?원자성 (Atomicity): 다 성공하거나, 아니면 다 취소하거나 (중간은 없다).일관성 (Consistency): 데이터베이스 규칙은 어떤 상황에서도 꼭 지킨다.격리성 (Isolation): 여러 작업이 동시에 돌아가도 서로 간섭하지 않는다.지..
[내일배움캠프 TIL] 26일차 - DB 성능 최적화 전략 시스템 규모가 커질수록 데이터베이스(DB)는 병목 현상의 중심이 됩니다.오늘은 성능을 극대화하기 위한 인덱스의 원리와 읽기/쓰기 최적화 기법을 정리해보 았습니다. 1. 데이터베이스 인덱스 (DB Index)인덱스란? 방대한 양의 데이터 중에서 원하는 정보를 빠르게 찾기 위해 별도로 생성한 '색인'입니다. 책의 맨 뒤에 있는 찾아보기(Index)와 같은 역할이라고 보시면 됩니다.동작 원리 (B-Tree) 대부분의 DB 인덱스는 B-Tree(Balanced Tree) 구조를 사용합니다. 데이터를 정렬된 상태로 유지하며, 이진 탐색과 유사하게 탐색 범위를 절반씩 줄여나가기 때문에 데이터가 많아져도 탐색 속도가 매우 빠릅니다.장점 (읽기 효율): SELECT 쿼리 속도가 비약적으로 향상됩니다.단점 (쓰기 저하)..
[내일배움캠프 TIL] 25일차 - 캐싱 전략 세션 관리 방식과 캐싱 전략에 대해 정리해 보았습니다. 1. 세션 관리: Sticky Session vs Session Clustering서버가 여러 대가 되면 유저의 로그인 상태(세션)를 어떻게 유지할지가 관건입니다.Sticky Session (스티키 세션)개념: 클라이언트의 요청이 처음 연결된 특정 서버로만 계속 전달되는 방식입니다.장점: 구현이 매우 쉽고, 각 서버가 본인의 메모리에만 데이터를 담으므로 속도가 빠릅니다.단점: 특정 서버에 사람이 몰리면 부하 불균형이 생기며, 해당 서버가 고장 나면 그 안의 세션 데이터는 모두 사라집니다.Session Clustering (세션 클러스터링)개념: 여러 서버가 세션 데이터를 서로 복제하거나 별도의 저장소에서 공유하는 방식입니다.장점: 서버 하나가 죽어도..
[내일배움캠프 TIL] 24일차 - CI, Github Actions로 CI 파이프라인 구축하기 CI가 무엇인지랑 Github Actions로 어떻게 파이프라인 구축할 수 있는지 간단하게 정리해보았습니다. 1. CI(Continuous Integration)란?CI(지속적 통합)는 개발자들이 작업한 코드를 정기적으로 공용 저장소(Git 등)에 통합하고, 그때마다 자동으로 빌드와 테스트를 수행하는 프로세스를 말합니다.핵심 목적: 여러 명의 코드가 섞였을 때 발생하는 충돌을 빨리 찾고, 버그가 섞인 코드가 배포되지 않도록 방지하는 것입니다.성공 기준: "코드를 합쳤을 때 빌드가 깨지지 않고, 모든 테스트 케이스를 통과하는가?"2. GitHub Actions로 CI 파이프라인 구축하기GitHub Actions는 GitHub 저장소 내에서 특정 이벤트(Push, PR 등)가 발생했을 때 미리 정의된 작업(..

반응형