분류 전체보기

    스프링부트 공유라이브러리 만들고 jitpack으로 배포하기 - 1편

    스프링부트 공유라이브러리 만들고 jitpack으로 배포하기 - 1편

    스프링부트 공유라이브러리 만들고 jitpack으로 배포하기 - 1편 스프링부트 공유라이브러리 만들고 jitpack으로 배포하기 - 2편 깃허브 주소 : https://github.com/Sangyong-Jeon/practice_core-service 작성 이유 SpringBoot(스프링부트)와 Gradle, Java로 라이브러리 만드는 자료가 많이 없었음 Maven은 꽤 있었으나 Gradle은 많이 안보였음 JitPack 으로 배포하는 방법도 있기는 했으나 나에겐 잘 안되던 것들이었음 시행착오를 많이 겪었던 부분이라 기록으로 남겨서 추후에도 사용하기 위함 기술 사양 Java 17.0.2 - Zulu SpringBoot 3.2 IntelliJ Github 간단한 동작 설명 공유 라이브러리(core-ser..

    AWS Builders Online Series 후기

    AWS Builders Online Series 후기

    🚀 잡담하기 최근에 아마존의 AWS가 한국에 정말 많은 투자와 관심을 주고 있다는게 느껴졌다. 예전부터 한국어 자막이나 한국어로 된 강의를 찍어서 행사나 강의, 세미나 등 열어주었기 때문이다. 또 최근 뉴스 "AWS에서 2027년까지 7조 8500억원 한국 클라우드 시장 투자"였는데 정말 어마무시하다...;; AWS 말고도 클라우드 서비스를 하는 국내 기업은 NHN, Naver, Kakao, Samsung 등이 있다. (해외는 Oracle, Google, Microsoft 등) 네이버는 두 번째 데이터센터 세종을 오픈하고, 카카오 클라우드도 여러 세미나 참여하면서 홍보하고, NHN 클라우드도 올해 세미나 크게 열면서 엄청났죠. 그런데 저번에 갔던 "대한민국 디지털 미래혁신대전 2023" 컨퍼런스에서 삼..

    Spring Cloud 마이크로서비스들은 어떻게 서로 통신 할 수 있을까? - Discovery Client

    어떻게 마이크로서비스(MS)들은 서로 위치를 알고 호출하는 걸까? Eureka(유레카)를 이용하여 서로 물리적 위치를 검색하여 찾기 때문이다. 서비스 디스커버리를 위해 MS들이 Spring Cloud Load Balancer(로드밸런서)와 상호 작용할 수 있는 3가지 방법을 찾아보자. 스프링 Discovery Client REST 템플릿을 사용한 스프링 Discovery Client 넷플릭스 Feign Client 🚀 스프링 Discovery Client Discovery Client와 표준 스프링 RestTemplate 클래스를 사용하여 호출 로드 밸런서와 그 안에 등록된 서비스에 대해 가장 낮은 수준 접근 가능 즉, Discovery Client를 사용하면 로드밸런서에 등록된 모든 서비스와 URL을 ..

    Spring Cloud 마이크로서비스들이 직접 Vault에서 값을 읽도록 만들어야 할까? - 보안과 유연성의 고민

    Spring Cloud 마이크로서비스들이 직접 Vault에서 값을 읽도록 만들어야 할까? - 보안과 유연성의 고민

    🚀 현재 상황 Spring Cloud Config Server (구성서버)는 가장 중요한 정보를 Vault에서 가져옴 (id, pw ...) 덜 중요한 정보는 Github를 통해 가져옴 (application.yml ...) application.yml에는 `${vault.gitId}`로 vault값을 사용하고 있음 application.yml 또는 application.properties에 굳이 ${vault.gitId}를 사용하지 않고, Vault에서 "spring.cloud.config.server.git.username" 키에 값을 넣으면 자동으로 적용되게 된다. 따라서 소스코드에서 Vault를 통해 값을 주입받는다는 기록을 남기지 않을 수 있다. 나는 왜 Vault에서 값을 가져온다고 명시했냐면..

    Spring Cloud Config Server - Vault 적용

    Spring Cloud Config Server - Vault 적용

    🚀 Spring Cloud Config 란? 분산 시스템에서 애플리케이션 구성 데이터를 하나의 중앙화 된 저장소에서 관리 가능 각 서비스를 다시 build(빌드)하지 않고 최신 구성 정보 적용 가능 스프링 및 스프링이 아닌 서비스와 긴밀한 통합 애플리케이션 환경에 맞는 구성 정보 사용 가능(dev, local. prod ...) 속성 값 암호화 및 해독(대칭 or 비대칭) MSA 인스턴스를 많이 실행하더라도 항상 동일한 구성 보장 가능 자체 프로퍼티(property) 관리 저장소가 있지만, 오픈 소스 프로젝트와도 통합 가능 Git(깃) Eureka(유레카) Vault(볼트) .... 그림처럼 Config Server는 외부 저장소에서 최신 구성 정보를 가져오고, 그것을 애플리케이션에게 줄 수 있습니다...

    분산환경에서 DB 기본키(PK)는 어떤 ID 생성 전략으로 만들어야할까? (UUID,ULID,TSID...)

    분산환경에서 DB 기본키(PK)는 어떤 ID 생성 전략으로 만들어야할까? (UUID,ULID,TSID...)

    보통 개발 편의성을 위해 Oracle의 Sequence, MySQL의 auto_increment 로 숫자를 1씩 증가시키는 것으로 만든다. 이것은 어떤 문제점이 있을까? 외부에서 해당 시스템 PK를 예측하기 쉬워져서 SQL Injection 문제 Sequence, auto_increment는 중앙 집중식으로 값을 생성하는 방식이므로 DB에 의존적이게 되어 확장성이 제한되는 문제 서비스 폭풍성장 시, ID 고갈되는 문제 (BIGINT 최댓값은 4,294,967,295 이고, unsigned BIGINT라면 18,446,744,073,709,551,615) 데이터베이스 변경의 어려움 DB가 2대 이상일 때 중복 문제 💡 MySQL 5.7 이하 버전에서는 AUTO_INCREMENT counter 값을 메모리에..

    맥 m1 mysql 데이터베이스 경로(위치) 찾기

    맥 m1 mysql 데이터베이스 경로(위치) 찾기

    homebrew로 mysql을 설치하고, m1 맥북이어서 예전의 경로와 다르다. 따라서 mysql에 접속한 후 아래 2가지 쿼리 방법으로 database(데이터베이스)가 저장된 폴더 경로(위치)를 알아낼 수 있다. # 1번째 show variables like 'datadir'; # 2번째 select @@datadir; m1 맥에다가 homebrew로 설치한 나는 "/opt/homebrew/var/mysql/" 위치에 데이터베이스가 저장되고 있었다.

    백엔드 아키텍처 기초 6 - DB 규모 확장

    백엔드 아키텍처 기초 6 - DB 규모 확장

    백엔드 아키텍처 기초 1 백엔드 아키텍처 기초 2 - 응답시간 개선 백엔드 아키텍처 기초 3 - 웹 계층 수평적 확장 백엔드 아키텍처 기초 4 - 데이터 센터 백엔드 아키텍처 기초 5 - 메시지 큐, 로그, 메트릭, 자동화 서비스 규모가 커지면 DB 부하도 같이 증가한다. 그렇기에 DB 확장에 대한 다음 2가지 방법을 생각해야 한다. 수직적 규모 확장 (scale up) 수평적 규모 확장 (scale out) 🚀 수직적 확장 기존 서버의 자원(CPU, RAM 등)을 고사양 or 더 많이 증설하는 방법 하드웨어의 한계로 무한 증설 X 서버 1대로 모든 트래픽 감당 X SPOF(Single Point of Failure) 위험성 증가 고성능 자원일수록 비용 증가 🚀 수평적 확장 DB의 수평적 확장은 샤딩(s..