[Flyway] Flyway 사용 시 함께 알면 좋은 것들 With 스프링부트
·
Infra
`Flyway`를 스프링부트 프로젝트에 적용해 사용하고 있다. 스프링부트에서 `Flyway`를 사용할 때 알아두면 좋은 것들에 관해 정리하고자 한다. 초기 작업 build.gradleimplementation 'org.flywaydb:flyway-core' 초기 스프링 프로젝트 생성 시 `flyway migration`을 선택하여 위와 같은 의존성이 등록된다. 그리고 나는 프로젝트에서 `postgresql`을 사용하기 때문에 아래 의존성도 추가해주었다.implementation 'org.flywaydb:flyway-database-postgresql'  db별 `Flyway` 구현체가 다름에 주의하자. 다음으로, `Flyway` 마이그레이션 파일 위치도 설정해주어야 한다. 기본 경로는 `resources..
[Flyway] Flyway - database migration tool
·
Infra/Flyway
1. Flyway 소개 우선, `Flyway` 공식 홈페이지에서는 `Flyway`를 다음과 같이 정리하고 있다."Flyway is an open-source database migration tool" 해석하자면 오픈 소스로 누구나 사용할 수 있는 데이터베이스 마이그레이션 툴이다. 여기서 데이터베이스 마이그레이션 툴?이 무슨 의미일까? 본래 데이터베이스 마이그레이션이라는 말은 한 데이터베이스에서 다른 데이터베이스로 이동하는 것을 의미한다.  하지만, `Flyway`에서는 모든 데이터베이스의 변경을 마이그레이션이라고 칭하고 있다.즉, `Flyway`에서 데이터베이스 마이그레이션 툴이란 데이터베이스 변경 관리도구가 된다.  마치, 소스코드 변경을 관리하는 깃허브처럼 데이터베이스의 변경은 flyway가 관리하..
분산 시스템에서 데이터를 전달하는 효율적인 방법 - 2
·
Infra/DevOps
2024.09.19 - [Infra/DevOps] - 분산 시스템에서 데이터를 전달하는 효율적인 방법 - 1 분산 시스템에서 데이터를 전달하는 효율적인 방법 - 1이번 포스팅에서는 NHN 유튜브의 분산 시스템에서 데이터를 전달하는 효율적인 방법 강의를 보고 정리한 내용이다.  포스팅에서 다룰 내용데이터 전달 보장 방법론RDB를 사용하는 애플리케이션hdbstn3055.tistory.com 이전 글과 이어지는 내용이다. 우리는 앞서 RDB를 사용하는 애플리케이션에서 전달 방법을 알아보았다. 이번 포스팅에서는 RabbitMQ를 사용한 전달 방법과 Kafka를 사용한 전달 방법에 관해 알아본다.  RabbitMQ를 사용한 전달 방법RabbitMQAMQP(Advanced Message Queuing Protoco..
분산 시스템에서 데이터를 전달하는 효율적인 방법 - 1
·
Infra/DevOps
이번 포스팅에서는 NHN 유튜브의 분산 시스템에서 데이터를 전달하는 효율적인 방법 강의를 보고 정리한 내용이다.  포스팅에서 다룰 내용데이터 전달 보장 방법론RDB를 사용하는 애플리케이션에서 전달 방법RabbitMQ를 사용한 전달 방법Kafka를 사용하는 애플리케이션의 전달 방법 분산 시스템이란?목표를 달성하기 위해 여러 개의 컴퓨터 리소스를 사용하는 시스템시스템은 두 개 이상의 컴포넌트로 구성되어 있다.엔터프라이즈 애플리케이션마이크로 서비스 아키텍처 애플리케이션모놀리식 아키텍처 애플리케이션 + 검색엔진네트워크를 사용하여 컴포넌트 간의 기능을 통합분산 시스템은 네트워크를 사용한다는 것이 특징 데이터를 전달하는 방법Remote APIMessageQueue 1. Remote API를 사용한 데이터 전달서버-..
[Kubernets] Replication Controller, ReplicaSet - Template, Replicas, Selector
·
Infra/Kubernetes
Kubernetes  이번 포스팅에서는 컨트롤러에 대해 알아볼 것이다. `Kubernetes`의 컨트롤러는 여러 기능을 통해 서비스를 관리하고 운영하는데 큰 도움을 준다.  Auto Healing노드 위에 `Pod`가 있는데 해당 `Pod`가 갑자기 다운되던가 아니면 해당 `Pod`가 스케줄링 되어있는 노드가 다운되면해당 `Pod`에서 돌아가던 서비스에 장애가 온 것이다.이때, `Controller`는 이걸 즉각적으로 인지하고 `Pod`를 다른 노드에 새로 만들어준다.이걸 `Auto Healing` 기능이라고 한다. Auto Scaling`Pod`의 리소스가 리미트 상태가 됐을 때 `Controller`는 이 상태를 파악하고 `Pod`를 하나 더 만들어준다.즉, 부하가 분산되며 `Pod`가 죽지 않도록 ..
[Kubernetes] Namespace, ResourceQuota, LimitRange
·
Infra/Kubernetes
Kubernetes  이번 포스팅에서는 `Namespace`, `ResourceQuota`, `LimitRange`에 관해 알아보려 한다. 우선, 해당 오브젝트들을 왜 사용해야 되는지 먼저 알아보자.  `Kubernetes` 클러스터 안에는 사용할 수 있는 자원들이 존재한다. 일반적으로는 메모리나 CPU가 있을 것이다. 클러스터 안에는 여러 `Namespace`들이 존재하며 `Namespace` 안에는 여러 `Pod`가 생성이 가능하다. 각 `Pod`는 필요한 자원을 클러스터 자원을 공유해서 사용하는데,만약 한 `Namepsace` 안에 있는 `Pod`가 이 클러스터에 남은 자원을 모두 사용해 버리면 다른 `Pod` 입장에서는더 이상 쓸 자원이 없어서 자원이 필요할 때 문제가 발생한다. 이런 문제를 해결..