전체 글 448

[마이크로서비스 아키텍처 구축] 2. 마이크로서비스 모델링 방법

해당 글은 마이크로서비스 아키텍처 구축에서 학습한 내용을 다룹니다.목차올바른 마이크로서비스의 경계결합 유형핵심 요약 1. 올바른 마이크로서비스의 경계MSA에서 서비스는 응집력이 강하고 결합도가 낮으면 구조가 안정적응집력 : 경계선 내부의 사물끼리의 관계결합도 : 경계선 안의 사물과 경계선 밖의 사물과의 관계 2. 결합 유형(1) 통과 결합데이터가 다른 하위 마이크로서비스에 필요하다는 이유만으로 한 마이크로서비스가 다른 마이크로서비스에 데이터를 전달하는 상황주문 서비스 --> 배송 목록 데이터 전달 --> 창고 서비스 --> 배송 목록 데이터 전달 --> 배송 서비스만약 최하위 배송 서비스에서 데이터 변경이 일어나면, 윗단계를 계속 거슬러 올라가 데이터 변경을 요구하는 상황이 발생할 수 있음따라서 위와..

[마이크로서비스 아키텍처 구축] 1. 기초 (MSA 개념)

해당 글은 마이크로서비스 아키텍처 구축에서 학습한 내용을 다룹니다. 0. 개요마이크로서비스란?마이크로서비스 핵심 개념모놀리스모놀리스의 장점마이크로서비스에 도움이 되는 활성화 기술마이크로서비스의 장점마이크로서비스의 고충마이크로서비스를 사용해야 하는가?  1. 마이크로서비스란? 마이크로서비스(microservice)는 비즈니스 도메인에 따라 모델링된 독립적으로 릴리스 가능한 서비스로, 기능을  캡슐화하고 네트워크를 통해 다른 서비스들에 엑세스하게 해준다.(편의를 위해 마이크로 서비스는 마이크로서비스 아키텍쳐(microservice architecture), 이하 MSA로 소개한다.)  외부에서 보면, 하나의 MSA는 블랙박스로 취급된다.가장 적절한 프로토콜을 사용해 1개 이상의 네트워크 엔드 포인트(Mess..

Kafka - Classpath is empty 이슈

로컬에서 Kafka를 돌렸는데 아래와 같은 로그가 출력됐다. Classpath is empty. Please build the project first e.g. by running './gradlew jar -PscalaVersion=2.11.12' 해결책은 크게 2가지가 있는데, 나는 2번의 방법으로 해결할 수 있었다.참고로 사용중인 운영체제는 Mac OS이다.1. Kafka Source 파일이 아닌 Binary 파일을 다운 받기  Kafka 공식 다운로드 사이트에서 Source 파일이 아닌 Binary 파일을 다운받아 실행하자.  2. 파일 경로에 특수 문자 또는 공백이 없는지 확인 내 경우엔 아래와 같이 kafka가 설치된 경로에 공백이 포함되어 있었다./DM/Desktop/work/dev util..

Java9 부터는 String이 StringBuilder보다 빠를 수 있다

개요작성 계기Java 9 이전 : String StringBuilderJava 9 이후 : String > StringBuilder진짜일까?결론 0. 작성 계기회사에서 작업 도중 위와 같은 코드 리뷰가 들어왔다.개인적으로 나는 Java랑 그렇게 친하다고 생각하진 않는다.코딩 테스트 언어도 C++로 선택했었고, 회사 외부에서 하는 프로젝트는 Kotlin 또는 Dart를 사용한다.Java는 현재 회사 업무랑 병행하면서 조금이라도 익숙해지고자 알고리즘 문제를 풀때 사용하는데, 애정이 없다보니 무언가 궁금한 키워드가 있을때는 수박 겉핥기 식으로 대충 이해하고 넘기는것 같다.이 기회에 모르는 지식이 있으면 제대로 짚고 넘어가자는 생각이 들었다. 1. Java 9 이전 : String StringBuilderJav..

트라이 (Trie)

개요Trie란?LeetCode 208번 문제 - Implement Trie (Prefix Tree)  1.  Trie란?문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료 구조이다.Trie라고 적고 try로 발음되며, 다른 말로는 래딕스 트리(Radix Tree), 접두사 트리(Prefix Tree), 또는 탐색 트리(Retrieval Tree)라고도 한다.  우리가 검색할 때 볼 수 있는 자동완성 기능, 사전 검색 등 문자열을 탐색하는데 특화된 자료구조이며,디테일한 설명은 박지훈님이 작성한 [자료구조] 트라이(Trie)를 참고하자. [자료구조] 트라이 (Trie)트라이(Trie)는 문자열을 저장하고 효율적으로 탐색하기 위한 트리 형태의 자료구조이다.우리가 검색할 때 볼 수 있는 자동완성 기능,..

NextStep - TDD, 클린 코드 with Java 18기 후기

목차수강 시작과 수료 완료강의 소개강의 장점강의 신청시 주의사항여담  0. 수강 시작과 수료 완료 2024년 3월 4일 부터 4월 18일까지, 약 1.5개월동안 진행됐던 NextStep의 클린 코드 with Java 18기를 수강했다.수강 계기는 같은 회사 동기가 함께 하는게 어떻겠냐고 권유했던게 시작이었다. 제목 그대로 Java로 TDD를 학습하는, 요약컨데 1.5개월짜리 TDD 온라인 부트캠프였다.1.5개월 동안 크게 4개의 Section으로 나누어 각 Section마다 주어진 주제를 1대1로 매칭되는 멘토(= 코드 리뷰어)와 함께 진행하는게 대략적인 내용이 되겠다. 수강할지 말지 고민을 꽤 많이했는데, 크게 아래 2가지 이유때문에 쉽사리 수강선택을 하지 못했다. 1.5개월 온라인 부트캠프이며, 강의..

📔Diary 2024.04.27

Optional을 막 쓰지 말자

개요작성 계기Optional이란?왜 막 쓰면 안되지?결론 0. 작성 계기회사에서 작업 도중 위와 같이 코드 리뷰가 들어왔다.Java나 Kotlin으로 개발할때 Null Check 로직이 필요되는 부분이라면 Optional을 빈번하고 사용하고 있었는데,Optional의 장점만 알고있었지 단점은 잘 모르고 있다는 생각이 들었다.이 기회에 Optional의 장점과 단점을 정리해보자. 1. Optional이란?Optional은 Java 8부터 추가된 컨테이너 클래스이다.// 기존 null 체크if (account != null) { processAccount(account);}// Java8의 Optional 적용var accountType = Optional.ofNul..

방어적 복사와 깊은 복사의 차이

방어적 복사가 뭐죠? NEXT STEP 과제를 하던 중, 멘토님으로부터 위와 같이 피드백이 들어왔다. 얕은 복사와 깊은 복사까지는 들어봤지만 방어적 복사는 처음 들어봤기에 정리를 해보면 좋겠다는 생각이 들었다. 잘 작성된 글을 참고하자 👍🏻 우아한 테크코스의 블로그에서 3기_파피님이 가독성이 좋게 내용을 정리하셨는데, 해당 내용을 참고하자. 방어적 복사와 Unmodifiable Collection 방어적 복사 vs Unmodifiable Collection… tecoble.techcourse.co.kr