본문 바로가기

Web/BackEnd11

[Backend] flyway 사용하기 🙋 들어가며 우리는 코드를 관리하기 위해서 git이라는 형상 관리 툴을 사용합니다. 반면에 여러분들은 DB는 어떤 것으로 형상을 관리하시나요? 바로 Flyway가 DB에 대한 형상 관리를 제공합니다. 이번 글에서 간단하게 사용법을 알아보겠습니다. 😋 🪽 flyway란? 공식 문서에는 다음과 같이 소개합니다. 😮 Flyway is an open-source database migration tool. DB 형상 관리를 도와주는 도구입니다. 심지어 오픈 소스입니다! 😋 🤔 왜 사용할까? 저는 개발을 할 때 DDL을 직접 작성해서 관리하는 것을 선호합니다. 스키마에 변경사항이 생기면 하나하나 수정했습니다. (다행히도 꼼꼼한 성격 때문에 아직까진 실수한 적 없습니다 😜) 만약 관리해야 할 DB가 많다면 이 과정.. 2023. 10. 11.
[Backend] DB 인덱스 이해하기 🙋 들어가며 처음 자료구조를 공부할 때 우리는 배열을 가장 먼저 접합니다. 배열에서 데이터가 어디에 있는지 나타낼 때 인덱스라는 용어를 사용하는데, 데이터베이스에서도 이 인덱스라는 용어를 사용합니다. 이번 글을 통해서 인덱스가 무엇이고 어떻게 사용하는지 알아보겠습니다. 📚 인덱스란? 저번에 읽었던 책에서 찾고 싶은 내용이 있을 때 어떻게 찾을까요? 맨 앞에 있는 목차혹은 끝에 있는 찾아보기를 참고할 것 같습니다. 이렇게 빠르게 찾기 위해서 도움을 주는 페이지를 인덱스라고 합니다. 페이지라고 표현한 이유는 DB에서 인덱스는 하나의 자료구조이기 때문입니다. 기본적으로 인덱스는 키를 정렬해서 보관합니다. 🤔 왜 빨라질까? 인덱스를 둔다는 것은 원하는 데이터가 어디에 있는지 마킹해두는 것입니다. 마킹을 기반으로.. 2023. 8. 4.
[Backend] 트랜잭션, 격리 수준 🙋 들어가며 데이터를 다룰 때 트랜잭션이라는 용어가 자주 등장합니다. 이번 글에서 우리는 자주 언급되는 트랜잭션이 무엇이고 특징이 어떤 것들이 있는지 알아보고, 주의할 점은 어떤 것들이 있는지 알아보겠습니다. 🤔 트랜잭션이란? 트랜잭션은 특별한 작업의 단위를 의미합니다. 어떤 특징이 있어서 단순한 작업과 다르게 표현을 하는 것일까요? 👀 특징 트랜잭션을 이야기할 때는 ACID라고 부르는 특징을 이해해야 합니다. ACID를 지키고 있는 단위를 우리는 트랜잭션이라고 부르는 것입니다. 🎭 루미큐브 루미큐브는 가장 유명한 보드게임 중 하나입니다. 이 게임은 트랜잭션의 특징과 아주 비슷합니다. 다음은 규칙입니다. 🎯 루미큐브 규칙 4가지 색을 가진 1부터 13까지 숫자가 존재한다. 필드에 제출된 숫자들은 같은 색.. 2023. 7. 27.
[BackEnd] MapStruct 사용기 😋 MapStruct 사용기 객체 간의 간단한 매핑을 위해서 MapStruct를 도입한 이야기를 해보려고 합니다. 어떻게 사용하는지와 사용하고 어땠는지 적어보겠습니다. 🪄 MapStruct란? Java 기반의 객체 매핑 라이브러리입니다. 다음과 같은 특징을 가지고 있습니다. 컴파일 시점에 매핑 코드를 작성한다. 그래서 런타임 시 오버헤드가 없고 안전하다. 다른 매핑 라이브러리보다 빠르다. 어노테이션을 통해서 매핑을 개발자가 쉽게 제어할 수 있다. Lombok에 대한 의존성이 꼭 필요하다. 💡 MapStruct 사용법 예시에 사용될 DTO와 Entity는 다음과 같습니다. // DTO 1번 public class RequestDto { private String title; private String co.. 2023. 5. 13.
[BackEnd] Enum 유효성 검사 구현기 🤔 들어가기 앞서 사실 enum에 대한 유효성 검사를 위해서 Custom Annotation을 구현할 필요는 없을 수 있다. 하지만 나는 DTO에서 enum 타입 자체를 가지고 있고, 구현한 enum 타입이 많아서 만들었다. 이를 통해서, Parse 오류도 잡고 클라이언트에서 어떤 값을 잘못 보냈는지 확인할 수 있게 되었다! 😋😋 Custom Annotation을 구현하는 방법은 이전에 작성한 글을 참고하기 바란다! 🪄 Enum용 CustomAnnotation 만들기 작성한 코드는 우선 다음과 같다. 핵심으로 표시한 부분은 다음에 설명하겠다. @Target({ElementType.FIELD}) @Retention(RetentionPolicy.RUNTIME) @Constraint(validatedBy = .. 2023. 4. 25.
[AWS] AWS 인프라 구축하기 - CodeDeploy (5) 🤗 AWS 구축하기 5 사실 이 시리즈의 메인 파트이다. 이번 프로젝트에서는 Github Action과 CodeDeploy로 CI/CD를 구축했다. 도커는 다음에.. 실행 과정은 다음과 같다. task 1 : Github Action에서 작업들을 마치고 코드를 빌드한다. task 2 : Github Action이 CodeDeploy를 동작시키고, S3에 빌드 결과물을 저장한다. task 3 : CodeDeploy가 EC2에 S3에 저장된 결과물을 가져와 배포한다. 설정하는 데 있어서 중요한 것은 IAM 권한 설정하는 것이다! 차근차근 기록해 보자. 🏭 CodeDeploy 🖥️ EC2 설정 추가하기 EC2에서 배포를 진행하려면 다음과 같은 추가적인 설정이 필요하다! Tag 추가하기 IAM 추가하기 인스턴스.. 2023. 4. 5.