본문 바로가기

개발 이론59

[Spring] flyway?? DB 마이그레이션?? 아 또 모르는 개념 나왔다. flyway?예? 이게 뭐죠..?? 뭐 db 마이그레이션 한다구요?에?? 지금까지 내가 이 개념을 만났을때 반응이다. 자자 천천히 알아보자 일단 flyway에 대해서 간단히 말하자면 DB이력관리를 도와주는 라이브러리 라고 생각하면 된다. 우리가 자주 사용하는 git은 소스 코드의 이력을 관리한다. flyway도 마찬가지다. DB에 대한 이력관리 뿐만 아니라 마이그레이션, 테스트 코드 실행시에도 도움이 된다. Migration?? 일단 migration이 뭔가.?? 간단하게 Migration이란 DB스키마에 발생한 변경사항을 DB에 적용하는 것이다. 운영환경, 개발환경, 로컬환경 등 다양한 환경에서 각자의 db를 갖고 있는데 모든 환경에서의 DB스키마를 맞추기 위함 인것이다. .. 2023. 11. 13.
[MSA & DDD] 애그리거트?? 간접참조 아 다른 분들의 코드를 보다보면 내가 공부할께 너무 많이 생긴다... 좋은데... 너무 많아... 모르는게...하하하 간접참조라는 단어를 보았고 간접참조에 대해서 알아보다보니 애그리거트??라는 단어가 나와서 알아보기로 한다 애그리거트?? 애그리거트는 관련 도메인을 하나의 군집으로 묶은 것이라고 한다. 음 조금더 자세하게 말하자면 연관된 것들끼리의 묶음이다. 위 사진은 객체 상위 수준 관점에서의 개별객체 단위의 관계이다 위 사진은 애그리거크 단위로 도메인을 나눈 것이다 이렇게 애그리거트 단위로 하나의 군으로 묶으면 좀더 상위 수준에서 도메인 모델간의 관계를 파악할 수 있다 애그리거트는 관련된 모델을 하나로 모은 것이기때문에 한 애그리거트에 속한 객체는 유사하거나 동일한 라이플 사이클을 갖는다 주문 관련 애.. 2023. 11. 13.
[Spring Security] 권한 부여 : 제한 적용 권한 부여 구성을 적용할 요청을 선택하는데는 선택기 메서드를 사용한다. 스프링 시큐리티에는 세 유형의 선택기 메서드가 있다 mvc 선택기 : 경로에 mvc식을 이용해 엔드포인트를 선택 앤트 선택기 : 경로에 앤트 식을 이용해 엔드포인트를 선택 정규식 선택기 : 경로 정규식을 이용해 엔드포인트를 선택 일단 선택기 메서드에 대해서 알아보자 간단하게 예제를 들자면 @RestController public class HelloController { @GetMapping("/hello") public String hello() { return "Hello!"; } @GetMapping("/ciao") public String ciao() { return "Ciao!"; } @GetMapping("/hola") p.. 2023. 11. 12.
[JPA]@Formula 이게 무엇이고..? 다른분의 코드를 보다가 @Formula라는 어노테이션을 보았다. 그분 코드를 보니 약간 좋아요수를 불러오는 것같던데 근데 엥?? 엔티티에 @Formula가 있길래 이게 뭐야...? 라는 느낌에 찾아보았다 @Formula 하이버네이트 사이트에 들어가서 보면 이렇게 적혀져 있다 @Formula allows mapping any database computed value as a virtual read-only column. The @Formula annotation takes a native SQL clause which may affect database portability. @Formula is a Hibernate-specific mapping construct and not covered by Ja.. 2023. 11. 12.
[DataBase] 인덱스?? 어떤분의 블로그를 보다가 인덱스라는 개념이 나왔다. 나에게 인덱스란 단순히 검색 쿼리를 빠르게 할 수 있다 정도였다. 맞는 말이지만 해당 블로그에서는 인덱스를 어떻게 적용하는지 적용해서 어떤 결과가 나왔는지와 같은 얘기가 나왔는데 단순히 빠르다 라는 개념밖에 모르니...이해하기 쉽지 않아서 자세하게 정리해본다 Index?? 인덱스란 정렬이다. 인덱스는 저장공간을 활용하여 데이터베이스 테이블의 검색속도를 향상시키기 위한 자료구조이다. 예를 들어 내가 원하는 내용을 찾기 위해 책의 모든 페이지를 찾는 것은 시간이 오래걸린다. 이때 책의 색인("찾아보기")와같은 인덱스 역할을 하는 것을 통해 빠르게 찾을 수 있다. 영어 사전에서도 알파벳순 정렬도 마찬가지다. 알파벳순으로 정렬되어있기때문에 빠르게 찾을 수 있다.. 2023. 11. 12.
[MSA & DDD] DDD?? 어떤 블로그님의 코드를 보다가 간접참조라는 단어가 나왔고 간접참조를 공부하다보니 DDD라는 개념에 대한 선행이 필요한 것같아서 정리해본다 DDD란?? MSA와 관계가 있지만 그걸 설명하게 앞서 DDD부터 얘기해보자 도메인은 여러 하위 도메인으로 구성된다.(도메인 : 영역, 집합, 유사한 업무의 집합) DDD란 비지니스 도메인 별로 나누어 설계하는 방식이다 왜?? 나누어 설계하느냐? 비지니스를 도메일별로 나눔으로써 확장가능하고 모듈간의 의존성은 최소화하고 응집성을 최대화할 수 있기 때문이다. 다시말해 DDD의 핵심 목표는 "Loosly coupling"과 "High cohesion"이다 (앞서 얘기한 의존성 최소화, 응집성 최대화) 여기서 간단하게 MSA를 말하자면 MSA는 DDD 기반으로 아키텍쳐 패턴을.. 2023. 11. 12.
728x90