본문 바로가기

전체 글

(81)
따끈따끈 AWS Solution Architect Associate C03, SAA 후기 - 2023년 1월 30일 시험 AWS 자격증 시험을 준비를 처음 한 것은 2021년 초에 (광일공방) 스터디를 통해서였다. 그당시 공공기관에서 개발하던 나는 클라우드 환경에 대한 이해가 턱없이 부족했고 스터디는 했지만 AWS 서비스를 사용해보지 않았기 때문에 겉핥기 식 공부를 할 수 밖에는 없었다. (물론 이번 시험은 정통 공부법으로 했다는건 아님…) 새로운 회사를 다니며 현재 AWS서비스를 사용하는 기업에서 일하며 다시 공부를 하니 2년전과는 확실히 이해하는 정도가 달랐다. 실제로 내가 공부한 모든 서비스를 사용하거나 네트워크를 구성할 일은 없지만!! 공식(비공식)적인 준비기간은 2년이라는 시간이 소요됐다. 1. 등록 시험 등록은 PearsonVUE 에서만 가능하다. (이전에는 Psi (?) 에서도 가능했다고 한다.) 현재 온라인/.. 더보기
마이크로 서비스에서 분산 트랜잭션과 사가 패턴 우리는 애플리케이션을 개발할 때 자연스럽게 트랜잭션을 사용한다. 스프링 프레임워크에서는 선언형 메커니즘(@Transactional)을 제공하여 간편하게 트랜잭셔널 비즈니스 로직을 작성할 수 있다. 그러나 이를 사용하는 데에는 전제가 있다. 해당 비즈니스 로직이 로컬 트랜잭션에서 해결 가능하거나 단일 DB에 접근하는 모놀리식 애플리케이션일 경우이다. 그렇다면 마이크로 서비스로 구성된 경우는 어떨까? Database per service로 구성된 아키텍처에서도 트랜잭션을 적용하는 것이 간단할 수 있을까? 마이크로서비스 환경에서의 트랜잭션 마이크로 서비스 환경에서의 트랜잭션을 설명하기 위해 배달 애플리케이션의 주문을 예로 생각해보자. 주문, 소비자, 주방, 회계 서비스가 있고 주문이 생성된다면 어떤식으로 트랜.. 더보기
스프링 카프카 with Template Source Code 1. 스프링 카프카 카프카 클라이언트에서 사용하는 여러 가지 패턴을 미리 제공한다. 컨슈머를 멀티 스레드로 운영하기 위한 스레드 풀 로직은 스프링 카프카를 사용하면 concurrency 옵션 하나만 추가하면 어렵지 않게 구현할 수 있다. 스프링 카프카 라이브러리는 어드민, 컨슈머, 프로듀서, 스트림즈 기능을 제공한다. 1.1 스프링 카프카 프로듀서 스프링 카프카 프로듀서는 카프카 템플릿이라고 불리는 클래스를 사용하여 데이터를 전송할 수 있다. 카프카 템플릿은 프로듀서 팩토리(ProducerFactory) 클래스를 통해 생성할 수 있다. 카프카 템플릿을 사용하는 방법 기본 카프카 템플릿 사용 카프카 템플릿을 프로듀서 팩토리로 생성하는 방법 1.1.1 카프카 프로듀서 예제 스프링 카프카에서 프로듀서를 사용할.. 더보기
카프카 기본 개념 정리 이 글은 간단하게 카프카의 기본 개념을 용어위주로 정리한 글입니다. 편하게 읽어주시고 틀린 내용이 있다면 언제든 댓글 부탁드립니다. 1. 카프카 구성 1.1 카프카 브로커, 클러스터, 주키퍼 카프카 브로커는 카프카 클라이언트와 데이터를 주고받기 위해 사용하는 주체이자, 데이터를 분산 저장하여 장애가 발생하더라도 안전하게 사용할 수 있도록 도와주는 애플리케이션이다. 하나의 서버에는 한 개의 카프카 브로커 프로세스가 실행된다. 3대 이상의 브로커 서버를 1개의 클러스터로 묶어서 운영한다. 카프카 클러스터로 묶인 브로커들은 프로듀서가 보낸 데이터를 안전하게 분산 저장하고 복제하는 역할을 수행한다. 주키퍼는 카프카의 메타데이터를 관리하는 데에 사용된다. 1.2 컨트롤러 클러스터의 다수 브로커 중 한 대가 컨트롤.. 더보기
스프링 부트 웹 애플리케이션 만들기 with Spring Reactive Web 스프링 부트란 무엇인가 스프링 부트는 스프링 포트폴리오를 신속하게, 미리 정의된 방식으로, 이식성 있게, 실제 서비스 환경에 사용할 수 있도록 조립해 놓은 것이다. 신속성: 의존관계를 포함한 여러 요소에 대한 의사결정을 신속히 적용할 수 있도록 해준다. 미리 정의된 방식: 스프링 부트를 어떻게 사용할지 구성을 정하면 기본적인 설정값이 자동으로 지정된다. 이식성: JDK가 있는 곳이라면 스프링 부트 애플리케이션은 어디에서나 실행할 수 있다. 실제 서비스 환경에 사용 가능: 견고한 완성품이다. 리액티브 프로그래밍 소개 대규모 사용자가 지속적으로 증가하는 시스템(하이엔드 시스템)은 비동기적으로 인입되는 거의 무제한의 데이터 스트림을 논블로킹 방식으로 처리할 수 있어야 한다. 1970 년대에 리액티브 프로그래밍.. 더보기
자바 개발자를 위한 코틀린 입문 1. 코틀린에서 변수와 타입, 연산자를 다루는 방법 1.1 코틀린에서 변수를 다루는 법 //java long number1 = 10L; final long number2 = 10L; //kotlin var number1 = 10L val number2 = 10L 코틀린에서 primitive 타입 //java long number1 = 10L; Long number3 = 1_000L; //kotlin var number1 = 10L var number3 = 1_000L 코틀린은 내부적으로 primitive 타입으로 바꿔서 똑똑하게 계산해준다. 프로그래머가 boxing과 unboxing을 고려하지 않아도 될 정도로 자동으로 처리해준다. 코틀린에서 nullable 코틀린에서는 기본적으로 모든 변수는 null이.. 더보기
딥 워크, 칼 뉴포트 p32. 신(New)경제에서 성공하기 위한 두 가지 핵심 능력 어려운 일을 신속하게 습득하는 능력 질과 속도 면에서 최고 수준의 성과를 올리는 능력 p55. 현재 기업계에서 진행되는 추세들은 개인의 딥워크 역량을 저하시킨다. 개방형 오피스 슬랙, 메신저, 이메일 등에 상시 접속 및 즉시 회신하길 요구 (상시 접속 문화) p57. 기업에서 개인의 성과를 측정하기가 매우 모호하다. (계량의 블랙홀) 상시 접속 문화 속에서 즉각적으로 대응하는 것이 성과로 드러내기는 쉽다. 이로 인해 딥워크에 투자하는 시간이 줄어드는 기회비용임을 인지하지 못하고 이를 정확히 측정하기도 어렵다. p67~68. 테크노 폴리 (인터넷 숭배) : 인터넷을 지혜와 조언의 원천으로 보는 경향 소셜 미디어가 기업에서 개인의 생산성에 도움이.. 더보기
Real MySQL 10장 실행계획 옵티마이저가 항상 좋은 실행 계획을 만들어낼 수 있는 것은 아니다. 그렇기 때문에 DBMS 서버에서는 이를 보완할 수 있도록 EXPLAIN 명령으로 옵티마이저가 수립한 실행 계획을 확인할 수 있다. MySQL 서버의 실행 계획에 가장 영향을 미치는 통계 정보를 살펴보고, 실행 계획을 읽는 순서와 키워드들을 살펴보자 10.1 통계 정보 MySQL 5.7 까지는 테이블과 인덱스에 대한 정보를 가지고 실행 계획을 수립했다. MySQL 8.0 부터는 인덱스되지 않은 칼럼들에 대해서도 데이터 분포도를 수집해서 저장하는 히스토그램 정보가 도입됐다. 10.1.1 테이블 및 인덱스 통계 정보 비용 기반 최적화에서 가장 중요한 지표는 통계 정보다. MySQL 서버에서는 실제 테이블 데이터의 일부를 분석해서 통계 정보를 .. 더보기