최근에 우리팀에서 만든 근태관리 서비스가 갑자기 말일에 무슨일인지는 모르겠지만, 서버가 다운되어 있는 상태로 되어있었다…일단 다운된 서버에 어플리케이션을 재 가동시켜 사용할 수 있게 만들긴 했지만 어디서 어떻게 터졌는지 몰랐기에 원인 파악부터 먼저 시작했다…다운된 서버
매주 업데이트 할 예정입니다. 12월 말까지2.4 관련된 데이터와 로직을 클래스로 모으기먼저 순서입니다.데이터 + 비즈니스 로직이 같이 있을 때 장점데이터 + 비즈니스 로직이 같이 있을 때 단점해당 단점을 해결하기 노력 및 단점제 생각이 아닌 다른 분들 해결 방법 의견
MSA가 파생되기 전에는 주로 사용하던 아키텍처는 Monolithic(모놀로식) Architecture 입니다.Monolithic Architecture는 모든 애플리케이션의 컴포넌트들이 하나의 단일 패키지로 통합되어 있는 구조를 의미합니다.이러한 구조에서는 화면, 데
이미 존재하는 기능을 다시 구현하지 말자for문과 if문이 동시에 있는 코드는 가독성이 좋지 못합니다.안 좋은 예시좋은 예시anyMatch 메소드를 알고 있으면, 복잡한 로직을 직접 구현하는 것이 아닌 한줄로 처리가 가능하다.조기 Contiune로 조건 분기 중첩 제거
의미를 알수 없는 네이밍은 지향하자클래스, 메소드 등에 번호를 붙히지 않고 어떤 작업을 하는지 기술 중심에 명명법으로 사용하자이해하기 어럽게 많든 조건문은 지향하자예를들어 if문이 하나의 비즈니스 로직에 적게는 5개 많게는 수십개가 들어간 코드를 만들지 말자데이터 클래
사실 합격에 대한 기대를 전혀 하지 않았다면 거짓말이지만 나는 이미 여름시즌 우아한 스터디에 지원했을 때 떨어졌던 경험이 있던 터라 기대를 많이 하지는 않았다. 아키텍처 청소부 모집 = 클린 아키텍처 읽고 관련 주제로 이야기 나누는 모임여름 시즌에 지원할 때는 지원
일단 제목을 해석하면 트랙잭션 복잡도이다.제목을 이렇게 지은 이유는 트랙잭션 처리에 대한 고찰(?)을 하고 난 뒤 나의 경험을 기반으로 한 내용들을 정리하기 위함이다.MSA Phase 5. Transaction 내가 쓴 블로그이다. 한번 읽고 시작하는게 편할 것 이다.
MSA의 태생적인 한계모든 서비스는 각 프로덕트로서 도메인을 책임진다.서비스/도메인 간 협럽과 디펜던시가 지양된다.또한 각 서비스의 DB는 각 서비스를 통해서 접근해야한다. (데이터 오너쉽)지금까지의 쿼리는 각 서비스내에서 모두 처리가 가능한 정도의 쿼리였다.하지만 프
이전 블로그에서 우린 Spring Rest Docs는 도입하였다. 아래는 해당 블로그이다.https://velog.io/@devty/MSA-Phase-7.-API-Document1-Spring-Rest-DocsSpring Rest Docs을 도입해보니 경험에서
기존에는 Spring Swagger를 사용하여 개발을 하였는데, 프로덕션 코드에 직접적인 영향을 미치기에 코드가 너무나도 지저분해지는 걸 느낄수 있었다.위와 같이 간단한 회원가입 로직인데 스웨거에 대한 코드가 많은 비중을 차지하고 있다.그리고 Swagger는 Postm
여태 앞서 우리는 테스트 코드(단위, 통합)를 짰다.그럼 우리는 이제 테스트 코드가 어디까지 본 코드에 대한 테스트를 진행했는지 파악해야하지 않은가?중간중간 놓치는 부분이 있을 수도 있다. → 사람이 하는 일이라 어쩔수 없음그래서 우리는 테스트 코드에 대한 테스트 커버
통합 테스트(Integration Test)는 소프트웨어 개발 과정에서 여러 시스템이 서로 상호작용하며 원활하게 작동하는지 확인하는 테스트 방법이다.이는 단위 테스트(Unit Test)가 개별 컴포넌트의 기능을 테스트하는 것과는 달리, 통합 테스트는 여러 컴포넌트가 함
사실 이 부분은 MSA가 아니고 Monolithic Arch에서도 많이 사용하는 기법이다.처음 도입을 생각했던 건 그 전에 했던 프로젝트에서는 모놀로식 아키텍처를 사용하였는데, 그 프로젝트가 커져가는 과정중에 운영서버에 배포 후 테스트하는 것이 매우 어려웠다.배후 후에
Transaction은 일련의 작업 단위를 의미한다.데이터베이스 관리 시스템(DBMS)에서 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 수행되어야할 일련의 연산들을 의미한다.원자성(Atomicity)트랜잭션이 데이터베이스에 모두 반영
해당 링크에는 선택과정과 큰 틀에 대한 이론이 정립되어 있다. 한번 보고 오면 도움이 될 것이다.https://velog.io/@devty/엉금엉금-Kafka-도입기앞으로는 공부할 때 해당 라이브러리, 플랫폼, 툴 등에 대한 아키텍처를 먼저 확인 후에 전체적인
MSA에서는 대게 도메인 서비스 별로 서비스가 나눠져있다.예를 들어 유저, 주문, 배송, 상품에 대한 서비스가 나눠져있다고 생각해보자해당 서비스에는 공통적으로 몇가지가 사용된다.예를 들어 유틸리티(util), 예외 처리, 인증 및 인가에 대해서 공통적으로 사용된다.이런
사내에서 사용하는 배치로 돌리는 작업이 기존에 4시간이 걸리는 작업이었다.4시간 동안 해당 서버는 그 배치로 인해 다른 작업이 불가능 상태이고 4시간은 너무 긴 시간으로 파악되어, 4시간에서 최소 1시간으로 줄여보기 위해 작업을 시작하게 되었다.데이터 베이스 최적화데이
MSA가 추구하는 방향성에는 밑과 같다.Strong Module Boundaries (명확한 모듈 경계)DDD(Domain Driven Design) 패턴에 바운디드 컨텍스트(Bounded Context)을 이용하여 서비스간 결합도를 낮출수 있다.Independent
앞 내용을 보고 오는 것을 추천합니다. MSA Phase 1. Springboot(1) Client가 Request를 날려준다.Gateway에서 Eureka에 등록된 서비스인지 확인한다.매번 Request 때 마다 확인하는 것이 아니라 30초(default)에 한번
Springboot 3.0 부터는 Java 버전이 17이상이 필수로 변경이 되었다.이런 문제로 인해 Java에 어떤 버전을 사용해야하는지 고민하게 되는 기점이 되었다.Java 버전에 자주 사용하는 버전은 다음과 같다. UntitledJava 8 (72% → 60%)J