전체 글
-
MSA 의 장점과 단점project 2023. 7. 24. 08:53
MSA 로 분리하는지 또는 monolith 로 뭉치는지를 선택하기 위해 MSA 의 장단점을 이해해야 한다. 장점은 독립적인 개발, 디비 분리 등이 있다. 단점은 transaction 을 들 수 있다. RDBMS 하나로 dao 가 묶이던 시스템의 쿼리가 (데이터를 어디에 저장하냐에 따라 다를 수 있다) 분산되어 RDBMS 가 지원하는 transaction 을 쓸 수 없게 된다. 해결 방법으로는 분산 트랜잭션이 있는데, 이는 복잡도가 높아 유지보수성이 낮아진다. 두 개의 microservice 를 하나의 transaction 으로 묶어야 한다면 우선 뭉치는 것을 고민해야 한다. 이 자체가 쪼개야 할지를 판단하는 하나의 지표로, 이러한 유스케이스가 많다면 쪼개지 않는 것이 좋다. 이와 별개로 최종적 일관성은 ..
-
데이터 중심 애플리케이션 설계 - 1장 reliable, scalable, maintainable systems서적 2023. 7. 23. 15:16
Scalablility 확장성이란 증가한 부하에 대처하는 시스템 능력이다. 부하(load) 란? 부하 매개변수로 표현할 수 있는 값으로, 시스템에 따라 매개변수가 달라진다. 부하 매개변수는 TPS, DB r/w 비율, 동시 활성 사용자, 캐시 적중률 등이 있다. 시스템에 특정된 매개변수의 예시로 트위터의 인기인 여부가 있다. 성능이란? 성능 지표로 표현할 수 있으며 튜닝의 목표를 정량적으로 표현한 기준이다. 성능 지표는 처리율, 지연, 용량, 사용률, 효율, 확장성, 저하 등이 있다.
-
mappedby 양방향 연관관계 값을 세팅해야 하는 이유jpa 2023. 5. 27. 16:18
그게 더 객체지향적이기 때문이다. 함수에서 값을 세팅하지 않을 경우 추상화가 깨지게 되어 재사용성이 떨어진다. 예를 들어 A 라는 메소드를 호출하는 C 로직에서 문제가 연관관계를 세팅하지 않아도 문제가 없다고 하자. A 메소드를 다른 곳에서 호출하면 어떤 문제가 생길까? B 메소드가 A 를 호출할 경우 값이 세팅되었는지 확인해야 하는 문제가 생긴다. 즉, B 메소드를 짜는데 A 를 들어다봐야 하고, 추상화가 깨져 객체지향적이지 않은 코드가 되어버린다.
-
어플리케이션 패키징 전략언어/java 2023. 5. 7. 16:25
1. 계층형 패키지를 3개 (controller, service, repository) 만들고 모든 도메인의 코드를 계층별로 분류한다. 개발 초기에는 유용할 수 있으나 코드베이스가 점차 커지면서 분리의 필요성이 생긴다. 2. 기능 기반 패키지 시스템을 기능 기반으로 나눈다. 수평적인 계층을 분리한 후 유스케이스별로 수직으로 패키지를 분리한다. 도메인 별로 패키지를 나누어 모듈 분리가 될 수 있어 1번보다 나은 구조이다. 비즈니스 룰과 인프라 코드가 섞여 있어 인프라의 변경이 비즈니스 코드의 변경을 불러올 수 있다. 3. 포트와 어댑터 비즈니스 룰과 도메인 코드와, 프레임워크나 데이터베이스 등 기술적인 세부 구현과 분리할 수 있다. 4. 컴포넌트 기반 패키지 자바의 경우 같은 패키지에 있어야 public ..