코딩공부 18

[Flutter] A problem occurred configuring project ':google_mobile_ads'. 에러 해결 방법

Flutter 개발 공부 도중 admob 플러그인(google_mobile_ads)을 추가하여 앱을 실행하였더니 다음과 같은 오류가 떨어졌다.A problem occurred configuring project ':google_mobile_ads'.> Could not create an instance of type com.android.build.api.variant.impl.LibraryVariantBuilderImpl. > Namespace not specified. Specify a namespace in the module's build file. See https://d.android.com/r/tools/upgrade-assistant/set-namespace for information..

[Spring Cloud] Spring Cloud 프로젝트 개요

본 글은 공식사이트에 설명되 있는 내용을 토대로 Spring Cloud 프로젝트의 전체적인 개요에 대해서 정리한 글입니다.Spring Cloud란Cloud 환경의 어플리케이션을 "cloud-native"하게 개발할때 외부 설정, stateless, 로깅, 서비스간 연결등 다양하게 고려해야 할 사항이 많습니다.Spring Cloud 프로젝트는 클라우드 어플리케이션을 개발할때 필요한 다양한 서비스를 포함하고 있어 편리한 개발에 도움을 줍니다.Spring Cloud 구조 하이라이트 Spring Cloud의 구조는 위 그림과 같습니다. 먼저 Client 요청은 API Gateway를 통해 뒷단에 있는 마이크로 서비스로 전달이 됩니다. 이때 어느 서비스로 전달할지는 Service registry를 통해서 라우팅 ..

코딩공부/MSA 2024.09.10

[Spring Cloud] Spring Cloud Gateway - 기본 제공 Route Predicate Factories

본 글에서는 Spring Cloud Gateway에서 기본으로 제공하는 Route Predicate Factory들에 대해서 설명합니다. 본 글은 공식 홈페이지의 내용을 기능별로 정리한 내용입니다.Route Predicate FactoriesRoute Prediates는 어떤 HTTP request를 match 시킬지 정하는 역할을 수행합니다. Spring Cloud Gateway는 이미 기본적으로 제공하는 Route Predicate Factories를 가지고 있으며 본 글에서 다룰 대상입니다. 만약 여러 Predicates를 동시에 사용하고 싶으시다면 yml 파일에 다음과 같이 여러 predicates를 같이 적으면 and 조건으로 들어가게 됩니다. 참고로 일반적으로 가장 많이 사용하는 Predica..

코딩공부/MSA 2024.09.04

[Spring Cloud] Spring Cloud Gateway - 설정 및 동작 원리

본 글에서는 Spring Cloud의 핵심 프로젝트 중 하나인 Spring Cloud Gateway에 대해서 공식 홈페이지 홈페이지에 있는 기본내용의 일부를 번역 및 정리한 글입니다. 이번글에서는 Spring Cloud Gateway의 두 가지 형태, 용어, 기본 설정, 동작 원리에 대해서 파악하실 수 있습니다.Spring Cloud Gatway의 두 가지 형태Spring Cloud Gateay는 보안, 모니터링 및 metrics, resiliency를 제공하는 단순하지만 효율적인 API 라우팅 기능을 제공합니다.Spring Cloud Gateway는 Server와 Proxy Exchagne라는 두 가지 형태를 제공합니다.Server 형태는 Spring Boot 어플리케이션안에서 기능을 모두 갖춘 API..

코딩공부/MSA 2024.09.02

[마이크로서비스] 마이크로서비스의 원칙

본 글은 책 「샘뉴먼, "마이크로서비스 아키텍처 구축", 2017」의 마지막장을 정리한 글입니다.1. 비즈니스 개념에 맞춘 모델링비즈니스 경계로 나눠진 콘텍스트가 기술적 개념에 맞춰 구성된 인터페이스보다 안정적도메인 경계를 정의하기 위해 경계가 있는 콘텍스트(Bounded Context)를 이용2. 자동화 문화의 적용서비스들의 동작을 보장하는 것이 모놀리식 시스템보다 복잡하므로 자동화 테스팅이 중요명령행 호출을 통한 배포와 지속적 배포 이용배포 시 환경 차이를 구체화 하기 위한 환경 정의 (ex OS)더 빠른 배포를 위한 커스텀 이미지 생성과 불변 서버를 이용3. 내부 세부 구현의 은폐경계가 있는 콘텍스트로 모델링을 통해 세부 구현을 은폐테이터베이스를 감추고 데이터 펌프, 이벤트 데이터 펌프를 통해 여러..

코딩공부/MSA 2024.04.01

Git 연습 사이트 소개 (+ 연습 사이트 명령어)

본 글에서는 Git을 연습할 수 있는 웹사이트를 소개하고 후기를 설명합니다. 또한 연습사이트에서 사용할 수 있는 연습 사이트명령어를 설명합니다. 1. 사이트주소 : https://learngitbranching.js.org/?locale=ko Learn Git Branching An interactive Git visualization tool to educate and challenge! learngitbranching.js.org Git을 공부 할 수 있는 사이트입니다. 기초부터 심화까지 Level별로 실습할 수 있는 환경을 제공하여 자연스럽게 Git 명령어에 익숙해 질 수 있는 환경을 만들었습니다. 해당 사이트에서 연습할 수 있는 명령어는 다음과 같습니다. - 로컬 명렁어 : commit, bran..

코딩공부/기타 2024.02.06

IgniteFuture을 CompletableFuture로 변환

Spring Webflux 코딩중 IgniteFuture를 CompleteFuture 객체로 변환해야하는 상황을 만났습니다. 인터넷 서핑을 하던 도중 GridGain 발표자료에서 객체 변환 방법을 설명하고 있어서 정리하였습니다. static CompletableFuture toCompletableFuture(IgniteFuture igniteFuture) { CompletableFuture future = new CompletableFuture(); //igniteFuture 객체에 callback을 등록(listen)합니다. igniteFuture.listen( fut->{ try{ //callback 결과로 도출된 값을 얻습니다. V res = fut.get(); //CompletableFuture에..

코딩공부/기타 2024.01.21

[Hazelcast] Split-Brain Recovery란

본 글에서는 Hazelcast의 Split-Brain Recovery에 대해서 다룹니다. Split-Brain Recovery는 Cluster의 분할이 감지되었을때 Merge를 어떻게 수행할지 설정하는 과정입니다. Hazelcast 공식 문서에 서술된 내용 일부를 번역하여 Split-Brain Recovery가 무엇인지, Merge Policy에는 어떤것들이 있는지, 설정은 어떻게 하면 되는지를 본 글에서 다룹니다. 1. Split-Brain Recovery 개요 Hazelcast는 주기적으로 백그라운드 작업을 통해 Cluster의 Split을 탐지합니다. Split이 탐지되면 우선 Merge를 시작 할 쪽을 결정합니다. 이 결정은 Cluster의 크기로 결정되는데요, Member의 수가 작은 Cluet..

[Apache Ignite] Data Consistency를 위한 Data Replication, Write Sync 설정

본 글에서는 Apache Ignite에서 Data Consistency를 위한 두 가지 설정인 Data Replication, Write Sync 설정에 대해서 다룹니다. 1. Data Replication 관련 설정 Ignite은 Data Replication 관련하여 Partition, Replicated 두 가지 Mode를 제공합니다. 먼저 Partition의 경우 전체 데이터의 여러 Partition을 만들어 노드에 저장하는 모드입니다. 이때 복제본 개수는 설정할 수 있습니다. 다음으로 Replicated 모드는 모든 노드가 모든 복제본을 가지고 있는 모드입니다. CacheConfiguration cacheCfg = new CacheConfiguration("myCache"); cacheCfg.s..

[Hazelcast] Split-Brain Protection이란

본 글에서는 Hazelcast의 Split-Brain Protection에 개념에 대해서 다룹니다. 요약하면 클러스터에 참여하고 있는 구성원 수가 특정 수 아래로 떨어지면 transaction을 막는 기능입니다. 1. Split-Brain Protection 개념 공식 문서에서는 다음과 같이 소개하고 있습니다. " Hazelcast에서 제공하는 Split-Brain Protection는 클러스터 구성원 수가 지정된 구성원 수 아래로 떨어지는 경우 클러스터를 보호합니다. Split-Brain Protection 시나리오에 대응하는 방법은 데이터의 Consistency가 중요한지 애플리케이션의 Availability가 중요한지에 따라 달라집니다. 두 경우 모두 분할 브레인 시나리오는 네트워크 오류로 인해 발..