현장에서 통하는 도메인 주도 설계 실전 가이드 - 개발자 관점에서 설명한 실무에 강한 DDD 입문서!
마스다 토오루 외 지음, 이승환 옮김 / 길벗 / 2025년 8월
평점 :
장바구니담기


DDD에 대한 새로운 책이 출간되어서 살펴보려고 합니다.

일본에서 출간된 책이며, 저자분들은 총 6분이 공동집필을 하셨습니다.

예시로 나와있는 코드는 java코드이며, 책의 분량은 240Page정도 입니다.

 

우리는 새로운 방식으로 서비스 개발을 추구합니다. 기존에 널리 사용하였던 정형화된 방식에서 

서비스 규모의 확장성 및 유지보수 및 서비스 개발에 빠른 재활용성을 확보하기 위해서 노력을 합니다.

이러한 관점으로 도메인 주도 설계 즉 DDD가 요즘 많이 사용되고 있습니다.

 

새로운 업무로 이번에는 도메인 주도 설계 DDD방식으로 신규 서비스를 개발을 하는 것으로 정해졌다면

우리는 어떻게 해야 할까요? 무엇을 해야 좋을까요? java, python, node, Spring, Node같은 언어나 프레임워크가 아니여서 

관련 메뉴얼이 있을지? 어떤 방식으로 진행을 해야 원하는 방향대로 잘 설계가 된것인지?

어떻게 지식을 얻어야 할지 막연할것 같습니다. 그런 관점에서 이 책이 그러한 애로사항을 해결할수 있지 않을까 생각이 들었습니다.

 

 

 

■ 내용 살펴보기

· 책의 구성은 우선 개발서적이지만, 이론과 방향성을 설명하는 것에 많은 주안점이 있습니다. DDD가 프로그래밍 언어가 아니기 때문에 자연스럽습니다.

총 3개의 Chapter로 구성되어 있습니다.

 

1장 도메인 주도 설계 입문: 개념과 설계 방식 이해하기

2장 도메인 주도 설계 실천 가이드: 이론에 앞서 응용력을 기르자

3장 클린 아키텍처란 무엇인가: 개발에 활용할 수 있는 설계의 핵심을 알아보자

이론에 대해서 충분히 설명을 하고 다음 심화 단계를 통해서 업무에 활용할 수 있는 방향으로 구성되어 있습니다.

 

· 제일 중요한 도메인이 무엇인지 알아야 하고, 설명하고 있습니다.

바라보는 관점이 중요할것 같습니다. 애플리케이션 개발, 객체지향, 애자일 개발 세가지 관점으로 도메인 모델의 활용법을 살펴봅니다.

도메인 주도 설계는 프로그램 언어에 종속적이지 않습니다. 이 이야기를 풀어보면, java, python등 언어에 제약이 없는 부분입니다.

도메인을 학습할때 언급되는 다양한 키워드들이 있습니다. 유비쿼터스 언어, 경계 컨텍스트, 값 객체, 애그리게이트, 리포지터리 등 다양한  패턴은 소프트웨어를 설계하기 위한 도구 입니다.

 

확실하게 용어 및 개념을 이해하는 것이 중요한데, 이러한 것이 잘 정리되어있습니다.

 

 

비지니스의 복잡성과 난이도가 높아지면서, 이제는 자연스럽게 이러한 도메인 관점으로 접근하게 되는 것이라고 생각합니다.

결국 서비스 또는 프로젝트를 수행하는 이유는 그 목적에 맞는 비지니스를 적절한 시기에 제공하여서 원하는 것을 달성하기 위함입니다. 그것은 구매로 이어지는 매출생성일수도 있고, 서비스 편의성을 제공하는 관점일수도 있습니다.

 

 

· 도메인 모델과 다른 요소들을 연결시키는 다양한 개념이 있습니다. 이미 예전부터 이러한 고민들을 여러 사람들에 의해서 고민되고 있었습니다.

 - 도메인 모델 + 3계층 구조

 - 도메인 모델 + 포트 & 어댑터

 - 클린 아키텍처

우리는 도메인 주도 설계와 객체지향 프로그래밍 방식과 혼란이 있을수 있습니다. 이러한 부분도 책을 통해서 개념 정리가 되는 것도 도움이 됩니다.

 

· 업무 로직을 개발하는 관점에서 우리는 일반적으로 기존에는 트랜잭션이나 DB의 테이블을 기준으로 설계를 많이 하였는데, 도메인 모델은 다른 접근법인것을 알려줍니다.

 

비즈니스 활동을 모델로 만들기 위해서는 무언가 현장의 기준이 있어야 합니다.

 - 업무 프로세스 중점 두기

 - 업무 데이터에 중점 두기

 - 업무 규칙에 중점 두기

보통 어플리케이션 개발시 세가지 방법을 조합해서 사용을 하는데, 이러한 기준을 참고해서 우리는 모델 주도 설계의 구성 요소를 도출합니다. 서비스마다 모두 같은 정답을 가지고 있지 않고, 바라보는 관점으로 추출해내는 기준이 다르다보니 어려움이 있는 것은 자연스럽지만

우리가 각 요소를 어떻게 뽑아내고, 구성하는지 계속 구상을 해야 합니다.

 - 엔티티 : 기본 관심사

 - 값 객체 : 업무 규칙을 표현하는 기본 구성 요소

 - 컬렉션 객체  :다중성을 클래스로 표현

 - 애그리게이트 : 여러 객체의 조합

 - 분기 객체 : 조건 분기의 복잡성 표현

 - 모듈 : 전체를 정리하기

 

· MSA환경 및 쿠버네티스 환경이 확대되면서 자연스럽게 분산아키텍처 환경이 되고 있습니다. 서비스가 지금은 기존 모놀리식 아키텍처로 서비스 하지만, 사용빈도와 트래픽으로 변경될수 있습니다. 그래서 처음부터 모놀리식를 도입하지만, 향후를 대비해서 도메인 주도 설계를 통해서 개발을 진행한다면, 추후에 별다른 변경없이 분선환경으로 이관될수 있는 환경을 처음부터 도입하려고 하는 요구가 있습니다.

 

책의 제목처럼 현장에서 적용할수 있는 이런 케이스들에 대한 내용을 통해서 실제 업무 환경에 도입을 할때 검토시 도움이 됩니다.

이미 예상하고, 경험해보는 것이 시행착오를 줄이는 가장 좋은 방법이기 때문입니다.

 

· 도메인 주도 설계의 구현은 도메인을 깊이 이해하는 것부터 시작합니다. 그래서 바로 서비스에 도입하는 것이 어려운 이유이기도 합니다.

도메인을 이해하기 위한 몇가지 방법이 있지만, 쉽게 잘 적용이 되지 않습니다. 2장에서는 DDD의 개요을 다시 확인하고, 실제 사례를 통해 DDD의 주요 기법을  조금더 상세하게 설명을 합니다.

 - DDD의 근간을 이루는 '유비쿼터스 언어'

 - 도메인 발견을 위한 '이벤트 스토밍'

 - 이벤트 스토밍으로 얻은 지식을 코드화 하기 위한 '이벤트 소싱'

이 세가지 효과적인 기법을 통해 DDD적용 하기 위한 내용으로 구성됩니다.

 

코드적인 부분은 책에 많이는 없지만, 아래와 같은 예시들이 개발적으로 이해들 돕기 위해서 구성되어 있습니다.

우리는 전통적인 구현방식을 개선하려고 하는 것이기 때문에 코드적인 흐름은 AS-IS분석에 도움이 됩니다.

 

3장에서는 클린아키텍처가 나옵니다. 개발자분들은 어떤 부분이 클린 아키텍처 이고, 어떤 부분이 도메인 주도 설계인지 명확하게 구분할수 있어야 하며, 서비스별 도입하려고 하는 방향성이나 범주를 판단하고 잘 구분지어야 합니다. DDD프로젝트에 대한 하나의 정책이고, DDD를 하다보면, 클린아키텍처의 특징들이 곳곳에서 보이는데, 클린 아키텍처 자체가 DDD의 목표는 아니기 때문에, DDD가 개발 방향성이라면 클린 아키텍처는 자연스럽게 그 결과로 나온 구조적인 형태의 결과물입니다. 

 - 클린 아키텍처의 본질인 SOLID 원칙적으로 살펴보기

 - 소스코드로 클린 아키텍처 핵심 도출하기

 - 강한, 느슨한 결함 확인하기

새로운 도입 전에 고려해볼 사항들을 정리해봅니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
일잘러의 비밀, 챗GPT와 GPTs로 나만의 AI 챗봇 만들기 - 테디노트와 AI 전문가가 알려주는 챗GPT 업무 활용법 + o1, 소라, 서치, 캔버스 활용 팁
테디노트(이경록).김정욱 지음 / 한빛미디어 / 2025년 2월
평점 :
장바구니담기


이 책의 부제도 관심있게 보시는것이 좋을것 같습니다.

부제 :  테디노트와 AI 전문가가 알려주는 챗GPT 업무 활용법+o1, 소라, 서치, 캔버스 활용 팁

공동 저자분이신 테디노트이 매우 유명하시고, 많은 내용을 공유해주시고 랭체인 한글 튜토리얼을 공개사시는등

제가 생각하기에는 우리나라에 많은 새로운 분야에 공헌하시는 분이라고 생각이 듭니다. (존경스럽습니다)

 

이번에 테디노트(이경록), 김정욱 두분이 좀더 현실적인 사용자 입장에서 활용도가 높은 책이 출간되었습니다.

 

동영상에 영상을 통해서도 쉽게 이해할수 있게 도움을 주고 있습니다.

https://www.youtube.com/@cudanote

 

 

 

■ 내용 살펴보기

해당 예제는 GPT4을 기준을 구성되어 있습니다.

 

실습뿐만이 아니라, 기존 GPT의 기술적인 발전과 예전 버전과의 비교를 통해서 얼마나 기술의 발전이 되었는지 "동일한 질의어"를 GPT4 버전과 예전 버전과 대답한 결과를 비교하면서, 상대적으로 어떠한 부분이 개선되었는지 느낄수 있습니다.

 

12 Days of OpenAI의 내용을 설명

해당 내용을 전체적으로 wrap-up 해주셔서, 최신 기술에 대한 트랜드를 파악하기 좋았습니다.

- GPT4 o1모델의 특화된 점

- 미세조정(Fine-Tuning), Sora, 캔버스 기능 등 총 12일 동안 소개되어 지는 기술정리하는 내용이 있습니다.

 

 

조금 더 이론적인 부분을 살펴보기 : "좀 더 알아보기" 장표를 통해서 추가 설명을 합니다.

 

 

프롬프트 입력창에 대해서 중요하다고는 알고 있지만, 실제 어떻게 하는 것이 효율적인지 잘 모르고 있습니다.

이책에서는 상당히 구체적으로 활용법에 대해서 잘 설명해주고 있습니다. 

· 목적 / 문맥 / 예시 / 페르소나, 포맷, 톤 등 6가지 기본 요소에 대한 설명

· 고급 프롬프트 기법인 샷 프롬프트, 생각의 사슬 프롬프트, 반복과 개선 프롬프트에 대해서 예시와 같이 설명해줍니다.

 

프롬프트 명령어에서, 강조하고 싶은 정보를 마크다운을 이용해서 진하게 처리해서 질의하는 방법

 

 

■ 활용방법 살펴보기

# 컨텐츠

 - 해시태그를 추출하는 것, 각종 플랫폼에 맞게 추천해줘 이러한 프롬프트는 인상이 깊게 다가왔습니다. (이렇게 구분하여서 가능한 부분)

 - 친근한 어투를 만들기 위해서, 이모티콘도 요청할 수 있습니다.

 - 당연히 결과물을 마크다운 방식으로 요청할수 있습니다.

 - 이메일의 작성도 원하는 포맷, 정보 형식에 맞게 작성할수 있습니다.

 - 발표자료도 구성이 가능합니다.

 

# 이미지

 - 이미지 사이즈 및 이미 생성된 이미지를 통해서 수정 프롬프트를 작성할 수 있습니다.

 - 그림이 바라보는 피사체의 위치를 지정할 수 있습니다.

 - 이미지에 텍스트 정보 입력

 - 색상, 질감, 조명, 분위기(일러스트 형식), 스칸디나비아 디자인 이라는 키워드 

 - 이미지에 대한 분석 및 음식사진을 기반으로 레시피도 요청할수 있음, 오류 내용 분석등을 요청가능

 - 통계이미지에 대해서 분석 / 관련 내용에 대해서 발표 스크립트 작성

 - 영수증, 재무재표 분석등 다양한 사진의 정보를 분석 할수 있습니다.

 

# 데이터 분석

 - 엑셀로 row데이터를 제공하고, 기존에 python으로 분석하는 다양한 데이터 분석 및 차트 및 분석을 요청할수 있습니다.

 - 이것을 기반으로 인사이트를 도출할수 있고, 이어서, 분석 기반 전략 수립을 할 수 있습니다.

 - 분석을 할때 (마케팅 전략 수립 / 중점 추진 방향 수립 / 보고서 작성) 등 기본의 업무의 형태로 진행이 가능합니다

 

# 웹 정보

 - 데이터를 복사해서 바로 붙여서 분석을 요청하거나

 - url을 제공하고, 그것을 기반으로 원하는 정보 가공을 요청할 수 있습니다.

 - html요소를 정의해서 복사하고, 크롤링 예제 코드를 작성 요청 할수 있습니다.

 

# 엑셀

 - 엑셀 데이터를 복사해서 각종 수식을 원하는 함수 기준으로 작성이 가능합니다.

 - google 스트레드시트에서는 별도의 유료 API를 구매해서, 시트를 연동해서 정보 가공이 가능합니다.

 

# 웹페이지

 - 정보를 제공하고 html 및 이미지, css요소까지 포함된 결과물을 생성할수 있습니다.

 - 해당 파일을 netlify.com으로 업로드 까지 구성해서 실습합니다.

 

# GPT스토어

 - gpt를 이용해서 결과물을 만들고 GPT 스토어에 올릴수 있습니다.

 - 만들기 기능은 유료 플랜으로 구독해야만 제공합니다.

 - 외부에 연동해서 정보를 제공하거나, 가지고 오는 구성을 할수 있습니다.

 

매우 다양한 기능을 제공하는 GPT의 활용법에 대해서 잘 이해할수 있는 설명과 예시는 많은 도움을 제공합니다.

실제 업무적으로 활용 가능한 부분도 많아서, 우선 관심있는 기능에 대해서 살펴보고 진행해도 전혀 문제가 되지 않습니다.

GPT를 모르고 사용하는것과 익숙하게 내가 원하는 결과물을 얻어내고 활용하는 것은 이제 실력이 되는 부분이 되었습니다.

GPT에서 제공하는 정보의 정확도와 기능을 계속 발전하기 때문에 이 책을 통해서 최대한 많은 분들이 발전하는

기술에 대해서 내것으로 만드는 기회가 되는 책이라고 생각합니다.

 

 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
FastAPI로 배우는 백엔드 프로그래밍 with 클린 아키텍처 - 모던 파이썬 웹 프레임워크 FastAPI로 TIL 앱 구축하기
한용재 지음 / 제이펍 / 2024년 10월
평점 :
장바구니담기


python 프레임워크중에 하나인 fastapi 책들이 많이 나오고 있습니다.

그만큼 기존의 django, flask 위주로 사용되었던 흐름에 조금씩 변화가 오고 있는 것 같습니다.

역설적으로 그만큼 fastapi가 주는 장점이 명확하기 때문에 이러한 트랜드에 변화가 있는것 같습니다.

이 책도 국내 저자분 한용재 님이 집필한 국내 서적이기에 그러한 부분이 국내에서도 많이 진행되는 것이라고

볼수 있습니다.

보통 fastapi 프로그래밍으로 소개가 될텐데, 책의 제목에 "with 클린 아키텍처"라는 부분이 인상적으로 

나가왔고, 책을 통해서 그러한 부분을 살펴볼 예정입니다.

 

 

 

■ 실습 위주로 구성된 책

· FASTAPI는 이름처럼 많은 장점이 있습니다.

 - 실행속도가 빠르다

 - 코드 생산성이 높다

 - 버그가 줄어든다.

 - 직관적이다.

 - 쉽다.

 - 간결하다

 - 강건하다

 - 표준을 준수한다.

 

· 실습 환경

 - 가상환경 관련해서는 poetry를 사용 (virtualevn, pyenv, pipenv등등이 있지만 해당 라이브러리 사용)

 - ASGI 서버로는 유비콘을 사용 (작은 규모에서는 유비콘, 큰 규모에서는 하이퍼콘을 권장)

 - DB는 docker기반으로 mysql을 사용

 

· TIL (today i learned)의 메모 기법을 구현합니다.

https://doing7.tistory.com/4

보통 해당 키워드로 검색을 해보면, 샘플로 프로젝트한 내용이 많이 검색됩니다.

 

 

· 해당 기능을 실습 위주로 하나하나 개발을 실습하고, 샘플코드도 있어서 따라하면서 문법 및 동작방식을 학습하는데 쉽게

 구성되어 있습니다. 노트 앱에서 기본적으로 필요한 CRUD 기능을 개발 진행 합니다.

 

 

■ 클린 아키텍처를 배울수 있는 내용 구성

· 클린코드에서 설명하고 있는 클린 아키텍처의 내용에 대해서 주요 핵심적인 요소가 잘 설명되어 있습니다.

· 관심사 분리와 계층형 아키텍처, 인터페이스 우선, 의존성 규칙의 장점을 강조하면서, 

  클린 아키텍처의 주요 4계층에 대해서 이 책에서는 이렇게 구성해서 사용합니다.

 

• 엔티티 -> 도메인
•유스 케이스-> 애플리케이션
• 인터페이스 어댑터-> 인터페이스
• 프레임워크 및 드라이버 > 인프라스트럭처(인프라)

 

파이썬 특히 FastAPI를 이용해서  클린 아키텍처를 구성하는 것은 매우 좋은 경험입니다.

 

 

■ 구현하기

· 도메인별로 기능 개발을 진행합니다.

 - 진행하면서 필요한 library를 소개하면서 설치를 진행합니다.

 - ULID (정렬가능한 범용 고유 식별자) : py-ulid

 - 패스워드 (passlib패키지와 bcrypy알고리즘 사용)

· API 라우터를 통한 url 생성

· pydantic을 이용한 데이터 유효성 검사 및 직렬화/역직렬화 적용

· SqlAlchemy ORM을 통한 객체 관계 매핑

· Alembic을 통한 테이블 생성 및 리버전 관리

 

 

하나씩 필요한 기능에 대해서 정의하면서, 실습코드 구성이 되어 있습니다.

 

· 로그인 시 JWT를 기반으로 json웹토큰을 사용하는 방식으로 구현

· 개발을 진행하면서, FASTAPI의 가장 큰 장점 중에 하나인 자동 문서화를 경험해보실수 있습니다.

  별다른 처리를 하지 않아도 OpenAPI문서 (swagger와 동일한) 를 통해서 쉽게 문서화 및 테스트가 가능합니다.

 

· 운영환경 배포를 위해서 dotenv를 통해서 환경변수 관리를 진행합니다.

· 이메일 보내는 기능

 - 이메일을 보내는 방법은 많은데, 이 책에서 Celery (https://github.com/celery/celery) 를 통한 분산작업 큐 방식을 이용해서

  예시를 든것도 아주 좋았습니다. (https://docs.celeryq.dev/en/stable/)

 : 메일발송이 비동기로 기존 회원가입의 과정에 필수 요소가 아닌, 비동기 처리로 구성하는 것이 서비스 운영 입장에서 더욱 효과적이기 

   때문입니다.

· 운영시 미들웨어를 통한 다양한 활용 사례가 있습니다. 

 - 요청 데이터 처리

 - 요청/응답 데이터 형식화

 - 인증/인가

 - 로깅 및 모니터링

 - 캐싱

 - 오류처리 

 - API 속도제한

 

좋은 예제를 통한, 클린 아키텍처 구성으로 서비스를 개발해보고 

운영환경까지 고려해야 하는 사항까지 포함된 fastapi를 학습하고, 적용하는데 많은 도움이 되는 책이라고 생각합니다.

 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
비전공자를 위한 AWS - 클라우드 입문부터 자격증 취득까지 쉽게 배우는 AWS
히로코 니시무라 지음, 강전희 옮김 / 제이펍 / 2024년 10월
평점 :
장바구니담기


처음 AWS를 접하게 되면, 300개가 넘는 다양한 서비스를 제공하는 갯수에 압도가 됩니다.

기존적인 EC2, S3의 기본 사항만 사용하고 서비스에 활용하기에는 기본적으로 알아야 하는 

다른 부과적인 기본 기능들이 다양하게 있습니다.

 

이 책을 그러한 처음 접하는 분들이 쉽게 서비스의 전체적인 개념을 파악하고

AWS공인 시험 CLF-002에 대한 소개까지 포함하고 있어서, 전체적인 기술을 파악후에 

자연스럽게 자격증 취득까지 가이드 하는 구성이 매우 흥미롭게 다가옵니다.

 

 

 

 

■ 내용 살펴보기

· 책의 구성은 AWS의 내용뿐만이 아니라, 조금 더 입문자 분들께 도움되는 기본적인 사항들이 곳곳에 있습니다.

 - 보안 및 규정 준수

 - 결제, 요금 및 지원

 - 인프라 배포와 운영

 - AWS 공인 클라우드 전문가 시험

등 AWS의 서비스 소개 및 기능 뿐만이 아니라, 조금 더 다양하게 AWS 기본을 다질수 있는 구성으로 되어 있습니다.

· 각 목차별 요약 (책에 서술된 내용)

 

• 1장에서는 클라우드 컴퓨팅, 클라우드 컴퓨팅의 가치 제안 및 AS를 소개합니다. 

   그리고 관심 있는 분들을 위해 AWS 공인 클라우드 전문가 시험에 대해 간략히 소개합니다.
• 2강에서는 클라우드 컴퓨팅의 장점, 클라우드 컴퓨팅 모델 및 배포 유형, 클라우드 컴퓨팅의 설계 원칙 등과 같은 클라우드 

  개념에 대해 설명합니다.
• 3장에서는 AWS 글로벌 인프라와 AWS에서 배포 및 운영 방법에 대해 설명합니다.
• 4장에서는 컴퓨팅 서비스, 스토리지 서비스, 데이터베이스 서비스, 네트워킹 및 콘텐츠 전송 서 비스, 관리 도구와 같은 

 핵심 AWS 서비스를 소개합니다.
• 5장에서는 보안 및 규정 준수 개념과 핵심 AWS 보안 서비스에 대해 설명합니다.
• 6장에서는 결제 및 요금제 개념, AWS 비용을 이해하는 데 도움이 되는 도구와 AWS Support 플랜을 알아봅니다.
• 7장에서는 AWS 공인 클라우드 전문가 시험을 다시 소개하고, 시험의 구성과 내용을 자세히 살펴봅니다. 

 이 장에는 시험 준비에 도움이 되는 학습 보조 자료가 포함되어 있습니다. 이전 여 섯 개의 장에서 배운 내용을

 종합하여 AWS 공인 클라우드 전문가 시험을 준비합니다.

 

• 영역 1: 클라우드 개념 -> 2장
• 영역 2: 보안 및 규정 준수~ 5장
• 영역 3: 클라우드 기술 및 서비스 3장, 4장
• 영역 4: 결제, 요금 및 지원 - 6장

 

이 책을 기반으로 학습을 하면, AWS의 자격증을 취득하는데 도움이 되는 구성으로 되어 있다는 생각이 많이 들었습니다.

 

 

· CLF-002

 - 기본적인 AWS지식을 검증하도록 설계되어 있습니다.

 - 아래와 같은 비중으로 시험 문제가 구성됩니다.

 - 자격증을 위한 책은 아니지만, 자격증에서 중요하게 생각하는 방향을 기준으로 학습을 한다면,

  AWS에서 필요한 기술들을 잘 효과적으로 학습을 할수 있을것 같다는 생각이 들었습니다.

 

· 시험에 필요한 부분 (책에서는 항목별로 추가 설명이 있습니다)

• AWS 교육 및 자격증(httpsiaws.amazon.com/certifcation)
• AWS 공인 클라우드 전문가 공식 시험 가이드(http://mngbzIneNe)

 (공식 시험 안내서, 공식 연습 제 세트, 공식 연습 문제는 여기에서 무료로 다운로드할 수 있습니다)
• AwS 클라우드 실무자 디지털 교육(http://mng,bz/X61)
• 시험 준비 웨비나(https://aws.amazon.com/training/events)
• Twitch 온디맨드 교육(http://mng.bz/494D)
• AWS 백서의 AWS 개요(http://mng.bz/QnvR)

 

 

· Well-Architected Framework 원칙

인하우스에서 서버 구성을 해도 동일한 원칙이 적용됩니다. 당연히 AWS에서 시스템을 구축할 때에도 필요합니다.

 

<보통 운영하면서, 초기 비용등에 대한 이야기도 많이 하는데, AWS는 운영하면서 변경/조정이 가능한 장점이 있습니다.>
• 운영 우수성 원칙operational excellence: 일상적인 시스템 운영, 모니터링, 개선
• 보안 원칙securty: 정보 및 시스템 보호
• 신뢰성 원칙rellabilty: 운영 장애를 방지하고 신속하게 복구하는 기능
• 성능 효율성 원칙 performance efficiency: 컴퓨팅 리소스를 효율적으로 사용
• 비용 최적화 원칙cost optimization: 불필요한 비용 방지
• 지속 가능성 원칙sustainability: 클라우드 워크로드가 환경에 미치는 영향 최소화

 

 

■ AWS 서비스 소개

큰 카테고리로 컴퓨팅 서비스 / 스토리지 서비스 / 데이터베이스 서비스 / 네트워킹 및 콘텐츠 전송 서비스 / 관리도구 

관점으로 설명을 진행합니다.

어떠한 서비스 인지 설명하고, 그림과 이해를 돕기 위해서 하나하나 카테고리별 주요 서비스에 대해서 설명합니다.

세부적으로 비전공자를 대상으로 하는 소개 개념으로 접근하는 방향으로 기술되어 있지만

내가 생각하는 서비스가 맞는지, 어떠한 서비스를 제공하는지 이해하는데는 문제가 없습니다.

 

4.1 컴퓨팅 서비스 75
__4.1.1 컴퓨팅 서비스 76
__4.1.2 AWS Elastic Beanstalk 78
__4.1.3 Elastic Load Balancing(ELB) 79
__4.1.4 AWS Lambda 80
__4.1.5 Amazon Elastic Container Service(ECS) 82
__4.1.6 간단 퀴즈 83
4.2 스토리지 서비스 83
__4.2.1 Amazon Simple Storage Service(S3) 85
__4.2.2 Amazon Elastic Block Store(EBS) 86
__4.2.3 AWS Snowball 87
__4.2.4 AWS Storage Gateway 88
__4.2.5 Amazon Elastic File System(EFS) 89
__4.2.6 간단 퀴즈 90
4.3 데이터베이스 서비스 90
__4.3.1 Amazon Relational Database Service(RDS) 91
__4.3.2 Amazon DynamoDB 92
__4.3.3 Amazon Redshift 93
__4.3.4 간단 퀴즈 93
4.4 네트워킹 및 콘텐츠 전송 서비스 94
__4.4.1 Amazon Route 53 94
__4.4.2 간단 퀴즈 96
4.5 관리 도구 96
__4.5.1 AWS CloudFormation 96
__4.5.2 AWS CloudTrail 97
__4.5.3 Amazon CloudWatch 98
__4.5.4 AWS Config 98
__4.5.5 AWS Trusted Advisor 99
__4.5.6 간단 퀴즈 100

 

· 요금체계 관련

다양한 요금 체계가 있습니다. 지원여부등도 연관성이 있습니다.

서비스를 효과적으로 운영하기 위해서는 Cost관련 고민도 사전에 충분이 진행되어야 합니다.

 

• Basic Support 플랜
• Developer Support 플랜
• Business Support 플랜
• Enterprise On-Ramp Support 2H
• Enterprise Support 2H

 

 

전반적인 AWS의 서비스의 흐름을 파악하고, 실제 자격증까지 고려하면서 크게 시스템을 접근하는 방향으로

핵심이 잘 정리되어 있습니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo
 
 
 
소프트웨어 설계의 정석 - 변화하는 기술 환경에서도 흔들리지 않는 설계의 기본 원칙
요시하라 쇼자부로 지음, 이해영 옮김 / 한빛미디어 / 2024년 9월
평점 :
장바구니담기


해당 책은 일본에서 초반이 발행되고(국내 출간은 안됨) 이번에 2판이 나온 책입니다.

기존에 변하지 않는 원칙에 대한 부분은 항샹 유효합니다. (모듈화, 재사용성, 유연성등의 설계원칙)

그 이후에 기술환경 속에서도 안정적으로 지속 가능한 새로운 부분도 추가되어서 설계의 정석이라고  할수 있는 부분은 설명합니다.

 

이번 개정판에서는 그동안 변화한 표준 프레임워크와 도구에 대한 설명을 새롭게 정의했습니다.

프레임워크에는 스프링부트를 채택하고, RESTful과 GraphQL을 이용한 API설계 및 아키텍처 설명에서는 MSA도 추가하였습니다.

애자일 개발에 대해서도 저자분의 경험을 통한 설명이 추가되었습니다.

현 시점에서 가장 많이 사용하고, 관심이 있는 기술 요소를 기반으로 책의 내용이 설명되어 지는 부분은

이번 최신 출간된 책의 장점이라고 생각되어 집니다.

 

 

 

 

 

 

 

■ 책의 구성

총 3편으로 되어 있습니다.

입문 / 설계 / 아키텍처 편으로 구성되어 있습니다.

입문의 내용을 살펴보면, 다른책과 조금 다른 편안한 분위기로 누구나 공감을 하는 내용을 기반으로 책의 공감대를 이끌어낸다는 생각이 많이 들었습니다.

 

책에 소개되어진 내용입니다. 큰 구성에 대해서 설명하고 있는 부분이여서, 이 책을 통해서 최종 아키텍처를 구성하는 과정까지

어떻게 이어져 있는지 소개되는 부분이라서 읽어보시면 좋을거 같습니다.

 

 

각자 서비스 필요한 부분을 선택적으로 읽어도 문제없는 구성입니다.

설계를 잘 하기 위한 3가지 큰 주제로 저자분은 아래와 같은 항목을 제시합니다.

1) 설계의 목적을 정확히 파악하는 것

2) 설계의 필요한 최소한의 테크닉을 알아야 한다는 것

3) 제대로 된 의사소통을 하는 것

이 3가지 중심으로 구성되어 있고, 설계에 필요한 최소한의 지식으로 다음 네가지를 중점적으로 다룹니다.

☞ 유스케이스 모델

 개념 모델

 데이터베이스 설계

 아키텍처 설계

 

 

■ 설계 대상

보는 사람들의 관점마다 설계의 구조와 대상이 달라질수 있다고 생각되지만, 분명한 범주가 있고 대상이 있습니다.

 

 설계의 대상은 범주가 넓고 포함하는 대상이 많이 있습니다.

이 책에서는 애플리케이션, 미들웨어, 데이터베이스 부분 Stack의 "소프트웨어 설계" 부분에 대한 설명을 합니다.

 

· 설계를 담당하는 사람은 누구인가?

설계를 해야 하는 사람에 대해서 정의 하기 앞서 책에서 프로젝트 및 개발 프로세스에 대해서 다시한번 언급해줍니다.

이러한 과정을 통해서, 각 상황이 다른 시점에서 어떤 사람이 설계에 대한 Role을 가지고 역활을 수행할지

고려할수 있는 부분을 언급합니다.

☞ 워터풀 개발, 점진적 개발, 애자일 개발 등 대표적인 개발 프로세스 중에 이책에서는 점진적 개발 방식을 통해서 첵에 필요한 개발설계의 방향을 잡고 있습니다.

 

 

· 설계의 목적

· 요구 사항의 기능요건, 비기능 요건

· 설계 접근법 : 외부설계, 내부설계

· 객체지향설계, 플로차트, DFD

· 개념모델 작성법, 화면설계법

· 데이터베이스 논리 설계

 - 1,2,3정규화 및 기본키 결정, 보이스코드 정규화, 외래키, 다대다 관계 설정, NoSql설계 등에 대해서 데이터베이스 설계시  고려해야 하고, 이론적으로 고려해야 하는 내용이 있습니다. DB설계시 반드시 알아야 하는 부분이 중요한 사항을 기준으로 잘 설명되어 있습니다.

· 비기능 요구사항에 대해서도 많은 부분을 다룹니다.

 - 평귱 장애 간격, 처리량/대기시간, 유지보수성, 이식성, 보안등에서 다양한 키워드들이 제공되고 정의되어 있습니다.

 

 

■ 4장. 내부 설계 방법

해당 Chapter에서는 기본적으로 SW 개발자분들이 가장 많이 접하고, 많이 고민하고 검토하시는 내용으로 구성되어 있습니다.

내부설계라고 하면 어색한 단어라고 생각이 들수 있는데, 상세설계라고 이해하시면 됩니다.

 

아래의 사항에 대해서 설계 관점으로 하나하나 체크해봅니다.

 

· 예제는 SpringBoot를 기반으로 설명을 진행합니다.

 - Controller 설계를 할때 수행처리할

    요청 파라미터의 유효성 체크

    요청 파리미터 획득

    비지니스 로직 호출

    응답에 대한 데이터 설정

    화면 전환 등을 담당합니다.

· http 세션 설계에 대해서도 무상태 프로토콜에서 상태를 유지하기 위해서 설계 구성시 반드시 고민해야 합니다.

  서버가 여러대 있을때, 해당 session clustering에 대한 부분이 중요합니다.

· 비지니스 로직 구성시, DB정보 조회시 고려 사항

  - 트랜잭션 스크립트 패턴

  - 도메인 모델 패턴

  - DAO 패턴

  - 트랙잭션 제어

  - 커넥션 풀 

  및 성능을 위해서 DB의 쿼리 plan에 대해서도 설계시 고려해야 할 내용이 설명되어져 있습니다.

 

■ 아키텍처 설계

· 아키텍처 정의 및 기본적으로 접근방법

· 객체지향 설계, 서브시스템 분할, 레이어 아키텍처에 대한 내용이 있습니다.

  레이어 아키텍처에 대해서 어떤 기준으로 Presentation, Domain, Data Source에 대한 부분이 있고, 자바에서 레이어 구현 및 레이어의 문제점에 대해서도 구성합니다

· DRY 공통처리를 위해서 접근하기 위한 방법등이 있습니다.

 

 

최신의 기술 트랜드 및 개발 방법론의 내용이 포함되어 있고, 소프트웨어 설계시에 고려해야 하는 부분이 책에 잘 표현되고

개발설계시 고려하지 못한 다양한 부분을 살펴볼수 있는 좋은 책이 출간 된 것 같습니다.

 


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
공유하기 북마크하기찜하기 thankstoThanksTo