분류 전체보기180 [마이크로서비스 아키텍처 구축] 챕터2. 마이크로서비스 모델링 방법 2.4 딱 도메인 주도 설계만큼 마이크로서비스 경계를 찾는 데 사용되는 기본 메커니즘은 도메인 주도 설계(DDD)이며, 이는 도메인 자체를 중심으로 진행한다. DDD는 프로그램에서 문제 영역을 더 잘 표현하는 중요하는 개념들을 제시했다. 보편 언어 의사소통을 돕기 위해 코드와 도메인 설명에 사용할 공통 언어를 정의하고 채택한다. 애그리거트 객체들의 집합이며 일반적으로 실제 세계 개념과 관련된 하나의 개체로 관리된다. 경계 콘텍스트 더 큰 범위의 시스템에 대한 기능을 제공하지만 복잡성을 숨기는 비즈니스 도메인 내부의 명시적인 경계. 2.4.1 보편 언어 보편 언어란 사용자가 쓰는 용어를 코드에서 동일하게 사용하려고 노력해야 한다는 것이다. 용어가 통용되는 곳? 코드! 코드에는 동일하게 사용되는 용어가 없기.. CS/기타 2024. 2. 2. [월급쟁이부자들] 따끈따끈한 주니어(2-5년) 백엔드 개발자 취업 후기 왜 지원했나 이 글은 성인 재테크 교육으로 유명한 월급쟁이부자들TV, 월부닷컴을 운영 중인 월급쟁이부자들이란 회사에 주니어 백엔드 개발자로 합격한 따끈따끈한(무려 오늘!) 후기이다. 해당 직무는 월부닷컴의 서버 프로그램을 고도화하고 유지보수하는 일을 한다. 사실 처음 접속했을 때, 월부닷컴이 노코드 툴로 만들어진 게 아닐까 싶었다. 그런데 개발자를 뽑는 걸 봐선, 직접 구축했구나. 싶었다. 또 CEO님이신 너바나님을 팔로우 중이었는데, 링크드인에 종종 올라오는 소식을 보니, 무서운 성장세를 보여주는 회사라는 점, 내집마련이 간절한 직장인의 문제에 공감이 되어 지원하게 됐다. 합격 월급쟁이부자들이 나의 네번째 회사가 됐다. 요즘 같이 이직이 어려운 시기에, 합격한 회사라 감회가 남달랐다 🥹 공고 "개발 뿐.. 생각정리/회고 2024. 2. 1. DispatcherServlet를 중심으로 본 스프링 MVC 동작 원리 오늘은 Spring MVC를 이해하는 핵심인 DispatcherServlet의 동작원리를 알아봄으로써 스프링 웹 어플리케이션이 어떻게 동작하는지 알아보도록 하겠습니다. 정의 디스패처 서블릿(DispatcherServlet)은 Dispatch(보내다) + Servlet(클라이언트의 요청을 처리하고 결과를 반환하는 Servlet의 구현 규칙을 지킨 웹 프로그래밍 기술)의 합성어입니다. 디스패처 서블릿은 서버로 들어오는 모든 HTTP 요청을 가장 먼저 받아서 적합한 컨트롤러에게 응답을 위임하는 프론트 컨트롤러(FrontController)입니다. 역할 이러한 역할은 위와 같은 다이어그램으로 도식화될 수 있습니다. 그런데 프론트 컨트롤러(FrontController), 핸들러(Handler), 핸들러 어댑터(H.. Framework/Spring 2024. 1. 31. [MySQL] MySQL 아키텍처 MySQL 아키텍처 구성 MySQL 접속 클라이언트 역할 대부분의 프로그래밍 언어에 대한 접속 클라이언트 제공 Shell을 통해서도 접속 가능함 MySQL Engine (MySQL의 두뇌) 구성 옵티마이저 요청된 SQL 문을 최적화해서 실행시키기 위해, 실행 계획을 짜는 역할을 함. 쿼리 파서 전처리기 실행 엔진 역할 클라이언트 접속과 SQL 요청을 처리함. MySQL 스토리지 엔진 (MySQL의 손발) 역할 데이터를 실제로 디스크에 저장하거나 디스크에 저장된 데이터를 불러오는 역할 옵티마이저가 작성한 실행 계획에 따라서 스토리지 엔진을 적절히 호출해서 쿼리를 실행 MySQL 엔진이 스토리지를 호출할 때, 사용하는 API를 핸들러 API라고 함 직접 구현하여 추가 가능 운영체제 파일시스템, 하드웨어 쿼리.. DB/MySQL 2024. 1. 30. [JPA] 영속성 컨텍스트란 영속성 컨텍스트정의영속성 컨텐스트란 엔티티를 영구 저장하는 환경이라는 뜻이다. 애플리케이션과 데이터베이스 사이에서 객체를 보관하는 가상의 데이터베이스 같은 역할을 한다. 엔티티 매니저를 통해 엔티티를 저장하거나 조회하면 엔티티 매니저는 영속성 컨텍스트에 엔티티를 보관하고 관리한다. 생성 및 접근 방법엔티티 매니저를 생성할 때 하나 만들어진다.엔티티 매니저를 통해서 영속성 컨텍스트에 접근하고 관리할 수 있다.엔티티의 생명주기비영속(new/transient): 영속성 컨텍스트와 전혀 관계가 없는 상태영속(managed): 영속성 컨텍스트에 저장된 상태준영속(detached): 영속성 컨텍스트에 저장되었다가 분리된 상태삭제(removed): 삭제된 상태비영속엔티티 객체를 생성했지만 아직 영속성 컨텍스트에 저장.. Language/Java & Kotlin 2024. 1. 29. [마이크로서비스 아키텍처 구축] 챕터1. 마이크로서비스란? (MSA 도입 전에 고려해야 하는 것들) 들어가기에 앞서 사람들이 MSA에 열광하는 이유 왜 사람들은 MSA로 전환하려고 할까? 전환의 이유로 꼽는 Tech 팀들의 글에는 공통적인 이야기가 있다. "모놀리식 구조의 코드 베이스"가 커지면 문제가 발생된다는 점이다. 배포 시, 예상치 못한 버그가 발생하기도 하고 배포하는 데에도 시간이 오래 걸린다. "하나의 코드 베이스를 여러 인원이 함께 작업하다보니, 서로의 작업 영역의 충돌이 잦다"는 점이다. 이로 인해, 개발 생산성이 낮아지게 된다. 이에 반해, MSA로 도입하면 아래와 같은 장점이 있다고 말한다. 비즈니스 도메인에 따라 서버를 구분함로써 독립적으로 배포 가능한 환경 구축이 가능하다. 독립적으로 배포 가능하면, 빠른 업데이트가 가능해진다. 또 모놀리식 아키텍처 배포에 비해, 배포 단위가 작아.. CS/기타 2024. 1. 19. [Spring] 모니터링을 위한 스프링 액추에이터 알아보기 프로덕션 준비 기능전투에서 실패한 지휘관은 용서할 수 있지만 경계에서 실패하는 지휘관은 용서할 수 없다는 말처럼, 서비스를 운영하는 개발자는 장애 상황이 언제든지 발생할 수 있다. 하지만 모니터링(경계)하여 장애 원인을 파악하고 명확하게 해결하는 것이 중요하다.개발자가 애플리케이션을 개발할 때 요구사항만 개발하는 것이 아니라, 서비스를 실제 운영 단계에 올렸을 때 서비스에 문제가 없는지 모니터링하고 지표들을 심어서 감시하는 행위를 해야 한다.이러한 기능들을 프로덕션 준비 기능이라고 부른다. 쉽게 말해, 프로덕션을 운영에 배포할 때 준비해야 하는 비 기능적 요소들을 뜻한다. 아래와 같은 요소가 존재한다.지표, 추적, 감시모니터링스프링 액추에이터스프링 부트가 제공하는 액추에이터는 프러덕션 준비 기능을 매우 .. Framework/Spring 2024. 1. 18. [Docker & Kubernetes 실전 가이드] 1과 시작하기 정의 도커는 무슨 문제 상황에서 도입해서 활용할 수 있을까? 도커는 컨테이너를 생성하고 관리하는 도구 컨테이너란 “표준화된 소프트웨어 유닛”이다. 컨테이너에 동일한 버전을 사용하는 종속성이 설치됐을 때, 항상 동일한 동작과 결과를 보장한다. 컨터이너 안에 “소프트웨어 유닛, 코드가 포함된 패키지 및 코드를 실행하는 종속성을 보관한다” 컨테이너를 왜 쓸까? (독립적인 표준화된 애플리케이션 패키지를 원하는 이유는?) 원격시스템의 종속성과 로컬/개발시스템의 종속성(버젼)이 다를때, 실행이 되지 않기 때문. 우리가 제품 생산에서 가지고 있는 것과 똑같은 개발 환경을 가짐으로써, 로컬/개발 환경에서의 테스트 결과를 신뢰할 수 있음. 팀이나 회사 내의 각각 개발 환경이 서로 다를 때. 프로젝트 간 서로 다른 버젼을.. CS/기타 2024. 1. 18. [소프트웨어 아키텍처 101] 챕터 5. 아키텍처 특성 식별 챕터 5. 아키텍처 특성 식별 아키텍처를 구축하거나 기존 아키텍처의 타당성을 검증할 때 제일 먼저 해야 할 일은 아키텍처 특성을 식별하는 것이다. 주어진 문제 영역이나 애플리케이션에서 아키텍처 특성을 정확하게 식별하기 위해 아키텍트는 해당 도메인을 잘 이해하고 있어야 하며, 도메인 이해관계자들과 협력하여 도메인 관점에서 정말 중요한 것들을 결정해야 한다. 아키텍트는 적어도 도메인 관심사, 요구사항, 암묵적 도메인 지식, 이렇게 세 가지 출처에서 아키텍처 특성을 밝혀낸다. (내 생각) 향후 추후 유입이 많을 것이라 예상되는 신규 서비스 개발을 한다면 아키텍트로서 확장성, 성능, 내고장성 등을 가장 중요한 특성으로 뽑아볼 수 있을 것 같다. 혹은 트랜잭션의 정합성을 완벽하게 보장해야 하는 결제 등의 도메인에.. CS/기타 2024. 1. 17. [소프트웨어 아키텍처 101] 챕터 4. 아키텍처 특성 정의 챕터 4. 아키텍처 특성 정의 아키텍트는 개발팀과 함께 도메인 또는 비지니스 요구사항을 정의할 수 있지만, 주로 소프트웨어로 처리할 일 중 도메인 기능과 직접적인 관련이 없는 모든 것들, 즉 아키텍처 특성(architectural characteristic)을 정의, 발견, 분석하는 일을 수행한다. 아키텍처 특성은 다음 세 가지 기준을 충족한다. 비도메인 설계 고려 사항을 명시한다. 설계의 구조적 측면에 영향을 미친다. 애플리케이션 성공에 중요하다. 비도메인 설계 고려 사항을 명시한다 애플리케이션 설계 시 애플리케이션으로 처리할 일은 구체적인 요구사항으로 정리한다. 아키텍처 특성은 이 요구사항을 구현하는 방법, 어떤 선택을 하게 된 이유와 관련된 운영/설계 기준을 명시한다. 예를 들어, 애플리케이션 성능.. CS/기타 2024. 1. 17. [소프트웨어 아키텍처 101] 챕터 3. 모듈성 모듈성 모듈성은 사실 제대로 정의하기가 쉽지 않은 개념이다. 우리가 아키텍처를 분석해야 할 (메트릭, 피트니스 함수, 시각화 등) 많은 도구가 바로 이 모듈성에 기반하기 때문이다. 모듈성은 일종의 구성 원리이다. 모듈성을 잘 유지하는 건 우리가 암묵적 아키텍처 특성이라고 정의한 것의 좋은 예가 됩니다. 즉, 아키텍처를 논하기에 앞서 모듈성을 잘 유지하도록 프로젝트 구조를 잡아 나가야 한다. 정의 모듈성은 일종의 구성 원리(organizing principle)이다. 물리학에 비유하자면, 소프트웨어 시스템은 엔트로피(무질서)가 증가하는 방향으로 움직이는 복잡한 시스템을 모델링한다. 아키텍트는 끊임 없이 에너지를 소비해서 시스템을 구조적으로 탄탄하게 유지해야 한다. 모듈성을 잘 유지하는 건 우리가 암묵적(i.. CS/기타 2024. 1. 17. [소프트웨어 아키텍처 101] 챕터 2. 아키텍처 사고 아키텍처 사고 아키텍트는 개발자와 사뭇 다른 관점에서 주변을 바라본다. 기상학자와 아티스트가 구름을 바라보는 관점이 다른 것과 같은 이치이다. 이것을 **아키텍처 사고(architectural thinking)**라고 한다. 그러나 안타깝게도 아키텍처 사고를 그냥 아키텍처를 생각하는 것정도로 단순하게 여기는 아키텍트가 참으로 많다. 아키텍트의 사고 방식은 크게 네 가지로 나뉜다. 아키텍처와 설계의 차이를 이해하고 아키텍처 작업을 진행하려면 개발팀과 어떻게 협력해야 할지 아는 것 어느 정도 기술 깊이를 유지하면서 폭넓은 기술 지식을 확보하는 것 다양한 솔루션과 기술 간의 트레이드오프를 이해하고, 분석하고, 조율하는 것 비지니스 동인(business driver)의 중요성을 이해하고 그것을 아키텍처 관심사로.. CS/기타 2024. 1. 12. 이전 1 2 3 4 5 6 7 ··· 15 다음 반응형