본문 바로가기
반응형

전체 글314

[http client] IntelliJ .http로 간단히 API 테스트 하는 방법 IntelliJ IDEA는 다양한 기능을 통해 개발자들이 HTTP 요청을 테스트하고 디버깅할 수 있도록 도와준다. 특히 REST API 개발에서 HTTP 요청을 빠르게 테스트하는 것이 중요한데, IntelliJ에서는 HTTP Client라는 강력한 도구를 제공하는데, 사용하는 방법도 직관적이고 간단하다. IntelliJ에서 HTTP Client로 API 테스트 하는 방법에 대해서 알아본다. 1. HTTP Client 설정IntelliJ에는 내장된 HTTP Client가 있어, 별도의 플러그인 설치 없이도 HTTP 사용이 가능하다. HTTP Client는 .http 파일을 생성하여 사용한다. 만약에 없는 경우 IntelliJ 플러그인에서 http로 검색을 해서 설치한다.  2. 기본 요청 테스트먼저 .ht.. 2024. 9. 15.
[MSA] Saga 패턴 이해와 종류(8가지) MSA 보상트랜잭션에서 많이 얘기가 나오는 Saga패턴에 대해서 알아본다. Saga 패턴- 서비스에서 각 업데이트가 이벤트를 발행해 다음 차례의 이벤트를 트리거하는 일련의 로컬 트랜잭션- 만약 일련의 작업들 중 하나라도 실패하면 이전까지의 작업이 완료된 서비스들에게 보상이벤트를 소싱함으로써 분산 환경에서 일관성을 보장하는 패턴- Saga패턴은 통신방식([Sync]동기/[Async]비동기), 일관성 처리([Atomic] 원자적 일관성/[Eventual] 최종 일관성), WorkFlow 조정 방식([Choreography]코레오그래피/[Orchestration]오케스트레이션)에 따라 8가지가 있음 1. Epic Saga(에픽 사가)동기 통신 + 원자적 일관성 + 오케스트레이션(SAO)많은 사람들에게 익숙하고.. 2024. 9. 12.
[독서] 언스크립티드(부의 추월차선 완결판) - 엠제이 드마코 각본화된(세뇌된) 대중적인 노예의 삶을 살지 말고 각본에서 탈출하여 기업가적 정신을 가지고 시간적, 경제적, 육체적 자유를 찾고 진정한 자신의 삶을 찾아라.  각본화된 삶에서 탈출하기 위해 정신적으로 어떻게 생각을 바꿔야 하는지, 실행은 어떤식으로 어떻게 해야하는지 등에 대해서 설명을 해주고 있다. 실행적인 부분에서는 확실히 사업적인 관점에서 접근을 하고 있어서 실제 경험이 없으면 잘 안 와닿을 수도 있을 것 같다. 하지만 현실을 자각하고 비전을 다시 잡는 일은 사업가나 직장인 구분없이 동일할 것 같고, 실행관점에서도 직장을 다니면서도 자기가 맡은 일에 대해서 충분히 실행해 볼수 있는 것이라 생각한다. 어떤 일을 하던지 자기가 현재 하는 일을 잘 해내는 사람이 다른일도 잘 해낼 수 있기 때문일 것이다. .. 2024. 9. 10.
브라우저에서 화면 css 스타일 전체 제거 프론트 개발 시 성능 등의 이유로 css 스타일의 영향도를 파악하기 위해 브라우저에서 css 전체를 한번에 제거하고 실행해보고 싶을 때가 있다. 이때 쉽게 화면에서 css 스타일을 제거할 수 있는 방법을 알아본다. 크롬에서 개발자도구를 실행하고, Console 탭에서 아래 명령을 입력한다. document.head.parentNode.removeChild(document.head) 참고로 크롬 개발자도구에서 위 명령을 복사붙여넣기 하면 아래와 같이 Warning이 떠서 직접 타이핑을 해야 한다. 크롬 개발자도구에서 위 명령을 naver에 접속하고 실행한 결과는 다음과 같다. 2024. 9. 7.
[MSA] 분산된 서비스 간의 WorkFlow(워크플로) 관리 - 오케스트레이션과 코레오그래피 분산된 서비스 환경에서 도메인에 특정한 작업을 수행하고, 그와 관련된 부수적인 문제를 처리하기 위해 둘 이상의 분산된 서비스를 하나의 WorkFlow(워크플로)로 조합하는 방법을 알아본다. WorkFlow관리 방법에는 크게 오케스트레이션(Orchestration) 패턴과 코레오그래피(Choreography) 패턴이 있다. MSA에서 보상트랜잭션 관리를 위한 Saga에서 얘기하는 오케스트레이션, 코레오그래피 패턴과 동일하다. 1. 오케스트레이션(Orchestration) 패턴 오케스트레이터(중재자)를 활용해서 중앙에서 워크플로 상태, 선택적 로직, 에러 처리, 알림 등 워크플로를 관리하는 방법MSA에서는 워크플로당 오케스트레이터를 하나씩 두는 것이 일반적 임경계조건과 에러 조건 등이 복잡한 워크플로 모델링.. 2024. 9. 7.
[MSA] 분산 데이터 액세스 패턴(분산된 데이터에 어떻게 접근할 것인가) MSA에서 서비스를 분리하게 되면 기존 통합되어 있던 데이터도 함께 분리가 된다. 이렇게 분산된 서비스 환경에서 서비스가 자신이 소유하지 않는 데이터에 접근하는 방법들에 대해 알아본다. 1. 서비스 간 통신 패턴다른 서비스에 필요한 데이터를 요청하는 가장 일반적인 패턴(타 서비스 API 호출)단순하고 직관적이나, 서비스 간 동적 커플링이 발생 함장점단점 단순하고 직관적  네트워크, 데이터, 보안 Latency가 발생(성능 저하) 데이터 용량 문제가 없음 확장성/처리량 이슈(타 서비스와 함께 확장 필요)  결합도에 따른 내고장성/가용성 저하  서비스 간 계약이 필요(API명세 등) 2. 컬럼 스키마 복제 패턴필요한 컬럼을 분산된 서비스의 여러 테이블에 복제해서 다른 바운디드 컨텍스트에서 자급자족적으로 사용.. 2024. 9. 1.
[MSA] 서비스 분리 해야할 때와 통합 해야할 때(서비스 분해와 통합 요인) MSA에서 서비스 분리를 고려할 때 어떤 경우에 서비스를 분리해야하고 반대로 어떤 경우에 서비스를 통합해야하는지 서비스의 분해인과 통합인에 대해서 알아본다. 간단하게 모률화, 세분도라는 용어부터 알아보자모듈화: 사용상의 유연성과 다양성을 위해 표준화된 단위로 만듬, 시스템을 별도의 파트로 분해하는 것세분도: 더 큰 단위를 형성하는 많은 입자 중 하나로 구성하거나, 그렇게 보임. 모듈화로 나눠진 개별 파트의 사이즈에 관한 것MSA에서 이 세분도를 어디까지 어떻게 가져가야 하는지에 대한 고민을 많이하게 된다. 서비스를 너무 작게 나누면 관리의 복잡도, 통신 복잡도, 결국 아키텍처의 복잡도가 증가하게 되고, 너무 큰 단위로 나누게 되면 서비스간의 결합도, 영향도 등이 증가하게 된다. 아래의 서비스 분해인과 통.. 2024. 8. 31.
[MSA] 데이터베이스 종류와 데이터베이스 선택 평가 항목 MSA에서 데이터베이스를 분리하면 각 서비스의 목적에 맞는 최적의 데이터베이스 타입을 선택해서 적용할 수 있다. 데이터베이스 타입의 종류와 타입을 선택하기 위한 평가 항목, 항목 별 대략적인 평가 점수를 정리해본다.  데이터베이스 타입 종류DB설명RDB - 일반적으로 ACID를 지원하는 관계형 데이터베이스 - Oracle, MySQL, Postgresql 등Key-Value DB - 키와 값으로 이루어진 저장과 조회라는 가장 간단한 원칙에 충실한 데이터베이스 - Redis, Riak, Oracle Berkely, AWS DynamoDB 등문서형(Document) DB - 키와 값이라는 기본 구조이지만 값을 문서로 저장. - 별도 스키마가 없고 문서를 추가하면 그게 바로 스키마가 됨 - MongoDB,.. 2024. 8. 25.
[MSA] 모놀리식 데이터베이스 분해 과정 MSA에서 데이터베이스 분해하는 과정을 알아본다. 아래 내용들은 도서 '소프트웨어 아키텍처 The Hard Parts'를 참조해서 정리한 내용이다. 모놀리식 데이터베이스를 분해해서 독립적인 데이터 도메인을 생성하는 5단계의 프로세스는 아래와 같다. 데이터 도메인이란 특정 도메인과 관련된 테이블, 뷰, 외래키, 트리거 등의 연관된 데이터베이스 아티팩트들의 집합이라고 할 수 있다.  데이터베이스 분해 과정 5단계1. 데이터베이스 분석 및 데이터 도메인 생성일반적인 모놀리식 시스템은 모든 서비스가 모든 데이터베이스의 데이터에 접근 가능한 구조 임(공유 데이터베이스 통합 스타일) → 데이터와 서비스가 서로 단단하게 결합되어 있어 데이터베이스 변경 관리가 어려움데이터베이스 분해를 위해서는 데이터 베이스 내에서 구.. 2024. 8. 24.
[MSA] 데이터베이스 분해인과 통합인 - 어떤 이유로 분해 또는 통합해야하는가? MSA에서 어떤 경우에 데이터베이스를 분리를 해야하는지?(분해인), 또 어떤 경우에 데이터베이스 통합을 고려해야하는지?(통합인)를 살펴본다.  데이터베이스 분해인- 데이터베이스를 분해해야하는 명분(어떤 경우, 어떤 이유로 데이터베이스 분리를 하는가?)- 데이터베이스를 분리하면 아래 표의 분해인 항목에 대한 장점을 가질 수 있다.분해인설명변경관리-  테이블,컬럼 등 변경 시 얼마나 자주 변경되고, 얼마나 많은 서비스가 영향을 받는가?    (데이터베이스 변경에 따른 서비스 변경, 테스트, 재배포 등의 범위와 영향도 줄일 수 있음)커넥션 관리- 데이터베이스가 여러 분산된 서비스와 커넥션을 맺을 수 있는가?   (데이터베이스의 최대 가용 커넥션 수에 도달 및 초과할 수 있는가?) - 서비스마다 자체 커넥션 풀.. 2024. 8. 18.
반응형