도서 19

느려진 서비스의 본질은 코드가 아니라 구조에 있다

"주니어 백엔드 개발자가 반드시 알아야 할 실무 지식" 2장·3장을 읽고, CS 개념과 실무 경험을 엮어 정리한 글입니다.들어가며서비스가 느려지면 가장 먼저 떠오르는 생각은 "코드를 최적화해야 하나?"이다. for문을 줄이고, 알고리즘을 개선하고, 불필요한 연산을 없애는 것. 물론 중요하다. 하지만 실무에서 마주치는 대부분의 성능 문제는 코드의 계산 복잡도가 아니라 I/O 경계에서 발생한다.이 책의 2장과 3장은 그 경계를 정확히 짚는다. DB 연동, 외부 API 호출, 커넥션 풀 설정, 캐시 전략, 인덱스 설계. 이것들이 실제 서비스 응답 시간의 70~90%를 지배한다는 사실을 데이터로 보여준다.이 글에서는 책에서 다루는 핵심 키워드들을 CS 관점에서 깊이 있게 풀어보고, 내가 실무에서 겪었던 경험을 ..

도서 2026.03.15

[소프트웨어 아키텍처] Ch.17 오케스트레이션 주도 SOA

오케스트레이션 주도 서비스 지향 아키텍처 (SOA) 완벽 가이드들어가며: 아키텍처 스타일의 흥망성쇠아키텍처 스타일은 예술 사조와 비슷한 측면이 있다. 그것이 발전하던 시대의 아키텍트에게는 의미가 있지만, 이후 시대에는 유관성(relevance)이 사라진다. 오케스트레이션 주도 서비스 지향 아키텍처(Orchestration-Driven Service-Oriented Architecture)가 바로 그런 경향을 보여주는 대표적 사례다.이 아키텍처는 논리적으로는 타당해 보이는 조직의 아이디어가 어떻게 개발 프로세스의 가장 중요한 부분을 저해할 수 있는지 보여주는 훌륭한 본보기다. 특히, 소프트웨어 아키텍처의 제1법칙인 "소프트웨어 아키텍처의 모든 것은 트레이드오프"라는 점을 무시할 때 생기는 위험을 잘 보여준..

도서 2026.02.02

[소프트웨어 아키텍처] Ch.16 공간 기반 아키텍처 스타일 (Space-Based Architecture) 완벽 가이드

1. 공간 기반 아키텍처란?공간 기반 아키텍처(Space-Based Architecture)는 높은 확장성, 탄력성, 동시성(concurrency)과 관련한 문제를 해결하기 위해 특별히 설계된 아키텍처 스타일입니다.1.1 이름의 유래: 튜플 공간 (Tuple Space)튜플 공간은 여러 병렬 프로세서가 공유 메모리를 통해 통신하게 함으로써 병렬 처리의 이점을 취하는 기법입니다.1.2 핵심 아이디어보통의 시스템에서 중앙 데이터베이스는 시스템의 동기적 제약조건입니다. 공간 기반 시스템은 중앙 데이터베이스를 두는 대신 메모리 안에서 데이터 그리드를 복제함으로써 높은 확장성과 탄력성, 성능을 달성합니다.1.3 주요 특징애플리케이션 데이터는 메모리에 유지: 모든 활성 처리 단위 사이에서 복제비동기 데이터베이스 갱..

도서 2026.02.01

[소프트웨어 아키텍처] Ch.15 이벤트 주도 아키텍처 스타일 (Event-Driven Architecture) 완벽 가이드

목차이벤트 주도 아키텍처란?요청 기반 모델 vs 이벤트 기반 모델토폴로지 개요이벤트 vs 메시지파생 이벤트와 확장 능력비동기 역량브로드캐스팅과 이벤트 페이로드오류 처리데이터 손실 방지요청-응답 처리중재자 토폴로지데이터 토폴로지아키텍처 특성 평가예시와 용례1. 이벤트 주도 아키텍처란?이벤트 주도 아키텍처(Event-Driven Architecture, EDA)는 인기 있는 분산 비동기 아키텍처 스타일로, 고확장성·고성능 애플리케이션을 만드는 데 흔히 사용됩니다.1.1 핵심 특징적응성이 매우 높음: 소규모 애플리케이션부터 대규모 복합 애플리케이션까지 다양한 규모에 적용 가능분리된 컴포넌트: 결합이 느슨한(decoupled) 이벤트 처리 컴포넌트들로 구성비동기 처리: 컴포넌트들이 비동기적으로 이벤트를 발생하고..

도서 2026.02.01

[소프트웨어 아키텍처] Ch.8~11 읽고 난 뒤: “구조”를 코드와 팀과 장애까지 연결하는 방법

컴포넌트로 사고하고, 스타일로 옮겨 담고, 운영에서 증명하기들어가며: 내가 아키텍처를 다시 보게 된 순간 백엔드 개발에서 “구현”은 늘 할 수 있습니다. 문제는 시간이 지나면 항상 같은 질문으로 돌아옵니다. 이 코드는 어디까지가 한 덩어리(경계) 인가?장애가 나면 어디까지 같이 죽는가(격리)?변경이 생기면 어디까지 같이 바뀌는가(결합)?팀이 늘어나면 충돌과 병목이 구조적으로 줄어드는가(조직-구조 정렬)? 챕터 8~11은 이 질문에 답하는 순서를 제시합니다. 논리적 컴포넌트로 먼저 생각하고(Ch.8)그 다음에 아키텍처 스타일로 물리화하며(Ch.9)현실에서 가장 흔한 계층형의 장단을 정확히 보고(Ch.10)“모놀리스의 현실성 + 도메인 경계”를 함께 가져가는 모듈형 모놀리스로 타협점을 잡는다(Ch.11) 그..

도서 2026.01.15

[소프트웨어 아키텍처] Ch.1~7 읽고 난 뒤: “설계도”가 아니라 “의사결정 체계”로서의 아키텍처

들어가며: 왜 지금 ‘아키텍처’가 더 중요해졌나책의 초반부는 아키텍처를 “정답을 그리는 활동”이 아니라 트레이드오프를 인지하고, 조직이 합의 가능한 형태로 결정하는 체계로 정의합니다. 특히 인상 깊었던 문장은 “중요한 결정은 양자택일이 아니라 스펙트럼 위의 한 점을 고르는 일”이라는 관점이었습니다.실무에서 제가 겪은 대부분의 논쟁도 결국 “A vs B”가 아니라 성능·비용·운영 난이도·변경 용이성 같은 축 위에서 어디에 무게를 둘지의 문제였습니다.1) Ch.1: 아키텍처는 ‘산출물’이 아니라 ‘구성 요소들의 결합’책에서는 아키텍처를 단일 문서나 다이어그램이 아니라, 다음의 결합으로 설명합니다.아키텍처 스타일: 시스템을 구성하는 기본 형태(예: 계층형, 이벤트 기반, 마이크로서비스 등)아키텍처 특성(qua..

도서 2026.01.07

[도서] 도메인 주도 설계를 위한 함수형 프로그래밍 Domain Modeling Made Functional

도메인 주도 설계를 위한 함수형 프로그래밍 - 서평(스콧 블라신, 『도메인 주도 설계를 위한 함수형 프로그래밍: Domain Modeling Made Functional – 코틀린과 타입스크립트로 구현하는 실전 도메인 모델링』)들어가며최근 마이크로서비스 아키텍처 포트폴리오 프로젝트를 진행하면서 도메인 설계의 중요성을 절실히 느끼고 있었습니다. 특히 서비스 간 경계를 어떻게 나누고, 각 도메인을 어떻게 모델링할지 고민이 많았는데, 이번에 『도메인 주도 설계를 위한 함수형 프로그래밍』 서평단에 당첨되어 책을 읽게 되었습니다. 이 책은 스콧 블라신의 명저를 코틀린과 타입스크립트로 재구성한 것으로, 실무에서 바로 적용 가능한 형태로 제공된다는 점이 매력적이었습니다.소프트웨어 개발의 본질: 코딩이 아닌 문제 해결..

도서 2025.12.13

[도서] 마이크로서비스 패턴을 읽고 - 온프레미스 MSA 환경의 현실적인 개선기

들어가며우리 회사는 온프레미스 환경에서 MSA(Microservices Architecture)를 운영하고 있다. 하지만 초기 구축 과정에서 일부 핵심 패턴들이 누락되거나 미흡하게 적용되어 있었고, 이로 인해 실무에서 여러 문제들을 마주하게 되었다. 현재 우리가 직면한 문제들:서킷 브레이커 미적용: 한 서비스의 장애가 연쇄적으로 전파되어 전체 시스템 장애로 확대SAGA 패턴 부재: 분산 트랜잭션 관리가 어렵고, 데이터 정합성 문제 발생오케스트레이션 패턴 미흡: 서비스 간 복잡한 비즈니스 플로우를 관리하기 어려움왜 완벽하게 적용하지 못할까?1. 조직적 장벽학습 곡선이 높고 팀 전체의 이해가 필요레거시 시스템과의 통합 부담"일단 돌아가는 것"이 우선순위2. 기술적 복잡도SAGA 패턴의 보상 트랜잭션(Comp..

도서 2025.10.10

[도서] 도메인 주도 설계로 시작하는 마이크로서비스 개발 – 실무와 연결된 인사이트

저자: 한정헌, 유해식, 최은정, 이주영출판사: 위키북스1. 이 책을 읽게 된 계기마이크로서비스 아키텍처(MSA)는 최근 몇 년간 빠르게 확산되며 많은 개발팀이 이를 도입하고 있다. 그러나 단순히 서비스를 작게 나눈다고 유지보수가 쉬워지는 것은 아니다. 중요한 것은 각 서비스가 독립성을 유지하면서도 하나의 시스템처럼 원활하게 동작하도록 설계하는 것이다.개발을 하면서 "이 서비스를 어디까지 독립적으로 분리할 수 있을까?" 라는 고민을 자주 하게 된다. 특정 도메인의 기능을 설계할 때, 향후 기능이 확장되더라도 유연하게 대응할 수 있는 구조를 만드는 것이 중요하다. 하지만 서비스 간 강한 의존성이 발생하면, 오히려 모놀리식보다 더 복잡한 시스템이 되어버리는 문제가 생길 수 있다.실무에서도 여러 개의 서비스가..

도서 2025.01.30

[도서] 면접을 위한 CS 전공지식 노트 독후감

독후감이 책은 컴퓨터공학을 전공했거나 IT 업계에서 취업을 준비하는 사람들에게 매우 유용한 내용을 담고 있다. 특히, IT 면접에서 자주 다뤄지는 CS 전공 지식을 체계적으로 정리해 놓아 취업 준비생뿐만 아니라 실무에서 사용하는 지식을 보완하려는 개발자들에게도 큰 도움이 된다.책은 크게 운영체제, 네트워크, 데이터베이스, 자료구조, 알고리즘 등의 주요 CS 분야로 나뉘어 있으며, 각 주제마다 핵심적인 내용을 명확히 설명하고 있다. 또한, 단순히 개념만 나열하는 것이 아니라, 실제 면접에서 나올 만한 질문을 바탕으로 답변과 해설을 제시해 실전 대비에 초점이 맞춰져 있다.주요 장점효율적인 구성책의 가장 큰 장점은 방대한 CS 지식을 짧은 시간 안에 효율적으로 학습할 수 있도록 구성되어 있다는 점이다. 각 주..

도서 2025.01.27

[도서] Clean Code, by Robert C. Martin (Uncle Bob)

📚 Clean Code 개요Robert C. Martin(일명 Uncle Bob)의 "Clean Code: A Handbook of Agile Software Craftsmanship"는 소프트웨어 개발자들에게 깨끗하고 유지보수 가능한 코드 작성 방법을 제시하는 필독서입니다. 이 책은 코드의 가독성과 유지보수성을 높이기 위해 다양한 원칙, 사례, 그리고 실전 코드를 통해 개발자들이 실천할 수 있는 지침을 제공합니다.📚 "Clean Code" by Robert C. Martin (Uncle Bob)"Clean Code: A Handbook of Agile Software Craftsmanship"은 소프트웨어 개발에서 깨끗하고 유지보수 가능한 코드(Clean Code)를 작성하는 방법과 원칙을 다룬 소..

도서 2025.01.07

[Algorithm] 수학리부트 - 논리의 기초

논리의 기초컴퓨터 프로그램도 0과 1을 계산하는 회로들이 복잡하게 ㅇ얽혀 결과를 내어놓는 논리 기계의 일종이라 할 수 있다. 프로그램을 한 줄 작성할 때마다 우리는 이미 명제나 집합에 관련된 수학을 계산하고 있는 셈이다. 수학의 토대인 논리의 기초를 공부해본다. 명제와 논리연산명제란 참인지 거짓인지 판별할 수 있는 문장이나 수식을 말한다. 다음은 참인지 거짓인지를 판별할 수 있으므로 명제다.달은 지구의 위성이다. (참 명제)고래는 어류다. (거짓 명제)다음은 참인지 거짓인지 판별할 수 없으므로 명제가 아니다.수학은 어렵다. ('어렵다'는 것은 주관적인 개념)x² - x - 1 = 0 (x값이 정해지지 않았으므로)명제는 대게 p, q, r 같은 영문자로 표시된다. 명제의 참과거짓을 그 명제의 진리값이라 하..

[Algorithm] 수학 리부트를 들어가기 앞서서...

나는 문과이다. 내가 수학이 필요하다고 느껴져서 수학을 다시 공부하기 시작했다. 직업마다 다르지만 개발자를 하기 위해서는 기본적인 건 알고 있어야 한다고 생각한다. 1. 수학적 지식이 있으면 작성된 프로그램의 품질과 성능이 확연하게 차이가 난다. 2. 알고리즘은 수학을 기반으로 한다. 3. 정보처리기사 자격증 실기도 수학을 기본 지식으로 알고 있어야 공부가 가능하다. 4. 복잡한 도형 및 교점을 찾고 찾기 위해서는 거리 공식을 알아야 한다. 5. 알고리즘도 많이 알아야 하는데 수학적 지식이 부족하다고 느껴졌다. 위 다섯 가지 이유들이 생겨나면서 처음에는 불필요하다고 생각했지만 점점 문제와 한계가 느껴지면서 필요성을 느끼게 되었다 그래서 개발자에게는 수학을 꾸준히 공부하는 게 필요하다고 느끼게 되었다. 여..

[이지스퍼블리싱] Do it! 알고리즘 코딩테스트 자바편

[Do it! 알고리즘 코딩 테스트 - 자바 편] 코딩 테스트를 볼 때 평소에 문제를 풀어본 경험이 있어도 막상 실전에서 콱.. 막히는 경험이 있었다. 그래서 최근 다시 알고리즘 스터디를 통해서 알고리즘 문제를 풀고는 있었지만 기본기가 부족한 상태에서 꾸역꾸역 문제를 풀다 보니 뭔가... 쉬운 문제만 풀게 되는 것과.. 구글 검색을 통해서 막히는 문제를 해결하니 온전한 내 실력이 아닌 것 같았다. 사실 기존에 [Do it! 자료구조와 함께 배우는 알고리즘 입문 자바 편] 책으로 기본 개념에 대해서 또 자료구조에 대해서 많이 얻고 알게 되었어서 찾아봤지만..ㅠㅠ 좋아하는 이지스퍼블리싱에서 자바 편 알고리즘 책이 더 없어서 아쉬웠었는데..! 이번에 Do it! 알고리즘 코딩 테스트 자바 편으로 새로운~ 책을..

도서/알고리즘 2022.04.15

React- 리액트 교과서 5장 React 컴포넌트 라이프사이클 이벤트

목차 React 컴포넌트 라이프사이클 이벤트 한눈에 살펴보기 이벤트 분류 이벤트 구현 모든 이벤트 실행하기 마운팅 이벤트 componentWillMount() componentDidMount() 갱신 이벤트 componentWillReceiveProps(newProps) shouldComponentUpdate() componentWillUpdate() componentDidUpdate() 언마운팅 이벤트 componentWillUnmount() React 컴포넌트 라이프사이클 이벤트 한눈에 살펴보기 React는 라이프사이클 이벤트를 기반으로 컴포넌트의 동작을 제어하고 사용자 정의를 할 수 있다. 마운팅 이벤트 : React 엘리먼트(컴포넌트 클래스의 인스턴스)를 DOM 노드에 추가 할 때 발생한다. 갱신..

React- 리액트 교과서 4장 React 컴포넌트의 상태 객체

3장 까지만 볼려고 했는데 4장을 펼치는 순간! 만약 이 책에서 한 개 장밖에 읽을 수 없다면, 이 장을 읽기 바란다! 라고 하길래 본다 createElement() 나 JSX 을 이용해 컴포넌트를 다시 생성하지 않고, 사용자 조작으로 발생한 이벤트를 처리하여 뷰를 갱신해야 한다. 상태 객체를 이용하면 이런 문제를 해결할 수 있다. React 컴포넌트의 상태 객체를 이용하면 가치 있고 상호작용이 뛰어난 React 애플리케이션을 만들 수 있다. 상태는 React 컴포넌트에 데이터를 저장학, 데이터의 변경에 따라 자동으로 뷰를 갱신하도록 하는 핵심 개념이다. React 컴포넌트의 상태란? React의 상태(state)는 컴포넌트의 변경 가능한 데이터 저장소다. 독립적이면서 기능 중심의 UI와 논리의 블록이다..

React- 리액트 교과서 3장 JSX

기억해야 할 주제 - JSX의 이해와 이점 - Babel을 이용한 JSX 변환 설정 - React와 JSX의 까다로운 부분 JSX의 정의와 장점 JSX는 함수 호출과 객체 생성을 위한 문법적 편의를 제공하는 자바스크립트의 확장으로, 특히 React.createElement() 호출을 반복해야 하는 불편을 해소한다. 템플릿 엔진이나 HTML처럼 보일 수도 있지만 그렇지 않다. JSX는 React 엘리먼트를 생성하면서 자바스크립트의 모든 기능을 쓸 수 잇도록 도와준다. JSX 장점 개발자 경험(developer experience. DX) 개선 : 표현력이 뛰어나 코드를 읽기 쉽다. XML과 문법이 유사하여 중첩된 선언형 구조를 더 잘 나타낸다. 팀의 생산성 향상 : 전문 개발자 외에도 개발 지식이 있는 팀..

React- 리액트 교과서 2장 리액트 첫걸음

엘리먼트 중첩계층적 방식으로 더 복잡한 구조를 만드는 방법은 엘리먼트를 중첩하는 것이다.또는을 컨테이너로 사용하는 것이 일반적으로 좋은 선택이다. createElement()에 전달하는 매개변수의 수는 제한이 없다. 두 번째 매개변수 이후의 모든 매개변수는 자식 엘리먼트가 된다. React 개발자 도구에서 확인해보면 두 엘리먼트가 같은 계층에 위치한다. 문자열로 작성한 일반적인 HTML태그, 예를 들면 'h1', 'div', 'p'처럼 화살괄호가 없는 문자열이다. 이름은 소문자로 작성한다.React 컴포넌트 클래스 객체. HelloWorld를 예로 들 수 있다. React 컴포넌트 클래스의 이름은 대문자로 시작한다. React는 표준 HTML 요소를 탐색해서 일치하는 것이 있으면 해당 React 엘..

React 란 무엇인가.

더보기React는 강력한 UI 라이브러리다. 페이스북, 넷플릭스, 에어비앤비 같은 유명 기업들도 React를 기반으로 성공을 거두었다. 자바스크립트로 만든 React 컴포넌트는 웹 사이트 어디서든 UI를 재사용할 수 있다. React란? React는 UI 컴포넌트 라이브러리다. React UI 컴포넌트는 다른 특별한 템플릿 언어가 아닌 자바스크립트를 이용해서 만든다. 여러 컴포넌트로 UI를 구성하는 이런 방식은 React의 핵심 철학이다. React UI 컴포넌트는 매우 독립적이며 특정 관심사에 집중된 기능 블록이다. 예시로 날짜선택기, 캡차, 주소, 우편번호 요소를 위한 컴포넌트가 있을 때 이런 컴포넌트는 시각적 표현과 동작을 구현하는 논리를 모두 담고 있다. 또 다른 컴포넌트는 서버와 직접 통신하기도..