본문 바로가기

전체 글508

SOA 와 MSA 의 차이 최근에 MSA 에 관련한 강의,자료를 보면서 프로젝트의 크기에 따라 다르겠지만, 규모가 클 수록 MSA 아키텍처로 넘어가는 경우가 많은 것 같다. MSA 는 Cloud 을 통해서 서비스간 자유롭게 개발 및 통신할 수 있으며 서비스간 영향도가 줄어 드는 등 많은 장점을 가지고 있다. MSA 아키텍처를 완성시키기 위해서는 공수가 많이 들어가는 것 뿐만 아니라, 러닝커브가 높고 서비스 유지보수가 가능한지 등에 대한 많은 고민이 필요하다고 생각한다. SOA 는 Service Oriented Architecture 이다. 아래 그림처럼 SOA 는 서비스 공유를 최대화하여 필요한 곳에 공유 및 재사용이 가능한 서비스 중심의 아키텍처이다. MSA 는 MicroService Architecutre 이다. 위의 그림처럼.. 2024. 3. 23.
Null , isEmpty , isBlank 비교 요약 Null : 인스턴스가 생성되지 않은 상태 ( 참조 타입 발생 ) isEmpty : 길이가 0 인 상태면 true isBlank : 문자열이 비어있거나, 빈 공백으로 이루어져 있는 상태면 true 참고 : 검색조건 등 (유효성검사) 에는 StringUtils 의 hasText를 유용하게 사용한다. -> 스프링에서 지원 null 체크, 빈문자열 , 포함여부 모두 && 조건으로 확인한다. null - 참조형의 기본값 - 어떠한 값으로도 초기화 되지 않는 상태 참조형(Reference Type) 은 값을 설정하지 않으면 초기화가 자동으로 null 로 진행된다. 참조타입 : 원시타입을 제외한 타입으로, 객체의 주소를 저장하는 타입. 따라서 아래 테스트 처럼 NPE 를 발생시킨다. @Test @Display.. 2024. 3. 20.
Mac 자바 설치 경로 확인하기 Iterm 를 이용해서 자바 경로를 조회한다. /usr/libexec/java_home -V 해당 경로로 이동 cd /Users/joyunjong/Library/Java/JavaVirtualMachines 2024. 3. 13.
DB 모델링 연습(2) https://www.inflearn.com/course/%EC%83%9D%EA%B0%81%ED%95%98%EB%8A%94-%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%A0%EC%9D%B4%EC%8A%A4-%EB%AA%A8%EB%8D%B8%EB%A7%81/dashboard [7일완성]생각하는 데이터베이스모델링 강의 - 인프런 [TPC DB!] 생각하면서 배우는 데이터베이스모델링,단계별로 배우는 데이터베이스모델링, 데이터베이스모델링에서부터 웹프로그래밍 구현까지 한번에 마스터 할 수 있는 강의입니다., [사진]이 강 www.inflearn.com 1. 요구사항 분석 ( 학사관리 시스템 ) 간단한 학사관리 시스템을 구축하려고 합니다. 고객과의 상담을 통해서 관리할 필요가 있는 다음 정보들을 파.. 2024. 3. 9.
DB 모델링 연습(1) 데이터베이스 요구 사항 분석 : 요구사항 이해 개념적 데이터 모델링 (ERD) : 높은 수준의 데이터 구조를 시각화 하기 위해 엔티티-관계 다이어그램 ERD 작성 논리적 데이터 모델링 (RM - 관계모델) : 데이터 관계 및 제약 조건을 나타내는 관계형 모델 개발 물리적 데이터 모델링 (PM - 피지컬 모델) : 특정 데이터베이스 관리 시스템에 대한 실제 데이터베이스 스키마 설계 논리적모델링 물리적모델링 MysqlWorkbench ER Diagram 을 이용해 테이블 만들기 제약조건 추가 alter table t_customer add constraint fk_region_code foreign key (region_code) references t_region(region_code); alter tab.. 2024. 3. 9.
@Transactional 안에 @Transactional 테스트 @Transactional 안에 @Transactional 이 있는 경우 테스트를 해보았습니다. TransactionSynchronizationManager.*isActualTransactionActive*() 메서드를 이용해서 트랜잭션이 적용되는지 확인 할 수 있습니다. 1. ### 외부메서드(트랜잭션) + 이너메서드 @Slf4j @Service public class TransactionService { @Transactional public void outerMethod() { log.info(" ****** outerMethod start ******"); log.info(" ****** outerMethod transaction Active : {}" , TransactionSynchroniza.. 2024. 3. 4.
@Conditional 을 이용해 특정 조건일 때만 사용 @Conditional 특정 조건이 참인 경우에만 빈에 등록해야하는 상황에 사용할 수 있습니다. Condition 인터페이스를 상속받아 구현해 사용합니다. 반환타입은 boolean 값입니다. @FunctionalInterface public interface Condition { boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata); } @Slf4j public class MemoryCondition implements Condition { @Override public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) { // -Doption=.. 2024. 2. 22.
동시성 이슈 해결 방법 (synchronized , redis Lock, MySQL Lock) 보호되어 있는 글 입니다. 2024. 2. 18.
성능테스트 (with Locust) 기능의 동작이 가장 중요하지만 사용자가 많을 수록, 인기 있는 서비스일 수록 성능의 중요성은 비례해서 증가합니다. 현재 근무하고 있는 서비스기업에서는 특별하게 트래픽이 올라가는 시간대 또는 이벤트가 없고 전체적으로 24시간 평범하다고 판단할 수 있어 성능테스트에 대한 중요성은 간과하고 있었습니다. 강의를 찾아보면 항상 트래픽에 대한 중요성과 단위테스트, 성능테스트에 대한 과정은 포함되어 있었던 것 같습니다. 아직 많이 부족하고 성능을 튜닝하는 방법에 대해서도 많이 학습해야 하지만, 베이스는 현재 어느 정도의 트래픽을 수용할 수 있는지에 대해 파악하는 것이라고 생각합니다. 현업에서도 사용해서 성능향상에 도움되도록 더 자세히 공부해봐야겠습니다. -- 간단하게 Locust 를 docker 로 작동시켜 성능 테.. 2024. 2. 17.