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
 
 
 
소프트웨어 개발에 ChatGPT 사용하기 - 챗GPT를 활용한 프로그래밍부터 리팩터링, 문서 자동화, ChatGPT API, 랭체인까지
오노 사토시 지음, 김진호 옮김 / 제이펍 / 2024년 9월
평점 :
장바구니담기


코드의 개발시, 생성성향상에 대해서 많은 아이디어와 고민을 하게 됩니다.

그런 관점에서 ChatGPT에 대한 부분은 이제 필수적으로 검토하고, 관심을 가지게 됩니다.

인터넷에도 정보가 많이 있지만, 활용 방법과 종류도 많고 사용법도 조금 체계적으로 배우기위해서는

책을 통해서 정보를 얻는 방법이 조금 더 효과적이지 않을가 생각합니다.

 

목차를 살펴보았을때, 눈에 들어오는 부분이 있었습니다.

보통 코딩을 할때 도움을 받을수 있다고 생각하지만, 이 책에서는 코딩 이외의 다양한 소프트웨어 개발에 필요한 부분을

설명하고 있습니다.

 

3장 : 리팩토링에서의 활용

4장 : 문서의 자동 작성

5장 : 각종 개발 방법의 제안

6장 : 학습 과정에서의 활용

 

코드적인 부분을 도와주는 것 이외에 책의 제목 처럼 "소프트웨어 개발에~" 라는 부분이 조금 더 이해하기 좋게

다가왔습니다.

 

 

 

■ 실습환경 및 예제코드

· 책에서 사용되는 예제 코드

https://github.com/Choonholic/jpub_chatgpt

 

· 책에서 사용되는 모든 예제는 코랩으로 동작이 됩니다. 자연스럽게 언어의 기준은 Python인 것을 참고 하시면 됩니다.

https://github.com/Choonholic/jpub_chatgpt/blob/main/notebooks/

 

· 책을 작성하시는 시점에서는 GTP3.5가 무료여서 그 기준으로 작성이 되어 있습니다.
현재 기준에서는 gpt 4.0을 무료로 이용 가능하니, 참고 하시면 좋을거 같습니다.

 

 

■ 프로그래밍에 활용하기

· 트랜스포머, 합성곱신경망, 순환 신경망등에 대해서도 간단하게 살펴볼 수 있습니다.

어떻게 질의를 해야 더 좋은 내용을 답변 받을 수 있을지 궁금증이 있있다면 참고할 수 있습니다.

 

· 이해는 하지만, 잘하지 못하는 것을 ChatGPT에게 맡긴다.

 - 정규표현식 같은 부분도 많은 활용범위가 있습니다.

 

책에서 예시로 사용한 프롬프트는 아래와 같은 것이 있어서 소개 합니다.

파이썬3로 정규표현식을 사용하여 비밀번호를 검증하는 코드를 작성해주세요. 비밀번호의 조건은 영문 소문자, 영문 대문자, 숫자, 기호가 섞여 있는 것입니다.

파이썬으로 텍스트 파일을 읽는 예제 코드를 작성해주세요. 단 읽기 전용으로 문자 코드는 cp932로 하고 잘못된 코드인 경우에는 무시하고 계속 읽어들이게 해주세요

매개변수로 깃허브 계정 이름을 지정하면, 그 정보를 반환하는 파이썬 함수를 작성해주세요

 


· 테스트 코드 작성하기

# 이전 질문을 통해서 코드를 제공 받았다는 가정하에 아래와 같이 활용하면 좋습니다.

위의 코드에서 테스트 코드 부분을 unittest로 다시 작성해주세요

 

· 클래스 구성도로 부터 코드 생성 접근하기

 - 객체지향 프로그래밍을 접근하기 위해서 활용하기 좋습니다.

 - Mermaid 표기법을 활용해서 프롬프트 구성시, 소스 코드 정의가 됩니다.

 

· 상태이전표로 코드 생성 접근하기

 - 우리는 다양한 if조건을 이용해서 상태를 정의하고 로직을 수행합니다.

    이러한 코드를 상태 디자인 패턴을 이용해서 리팩토링도 지원합니다.

 

이러한 부분을 활용하여서, 사용하는 코드를 제시하고 가장 적합한 디자인 패턴을 제안받고, 적용에 활용할수 있습니다.

소스코드가 회사에서 사용하는 코드나 외부 유출이 불가한 내용인지 잘 확인해서 gpt 프롬프트 사용에 주의를 기울여야 합니다.

 

 

■ 리팩토링에서 활용하기

하고 싶고, 필요성은 느끼지만 바로 기존에 정상적으로 동작되는 소스를 변경하는것에는 부담을 느낄 수 밖에 없습니다.

이러한 부분에서도 chatgpt를 통해서 도움을 받는다면, 좋은 사수의 역활을 충분히 할 수 있습니다.

 

· 내가 생각하고 필요한 부분을 질의하고 원하는 답을 얻을수 있습니다.

사용된 프롬프트를 보면, 내가 원하고 수행해야 하는 사항을 명확히 설명식으로 입력하면 원하는 결과를 도출 할수 있는 것을 알수 있습니다.

샘플

파이썬으로 함수를 프로그래밍했지만, 그것을 좀더 작고 좀더 초점을 맞춘 함수로 리팩토링 하고 싶습니다.
(코드를 붙여서 넣습니다)
이 코드를 가독성에 중점을 두고 처리는 함수 안에서 충족시키며, 좀더 작으면서도 초점을 맞춘 함수로 분리해 리팩터링 하는 것을 도와주세요

 

함수 분할, 변수 이름과 함수 이름의 개선, 중복 제거

인라인 주석을 추가하기, 함수 문서를 추가하기

보안취약성 확인하기,, 예외처리와 논리 완전성 개선 등에 활용하고 개선할수 있습니다.

 

 

■ 문서의 자동 작성, 학습하기, ChatGPT API 활용

사용되는 다양한 라이브러리들이 있습니다. (코렙에서 쉽게 설치가 가능합니다)

· python-pptx (파워포인트)

· python-docx (워드문서)

· openpyxl (엑셀 연계 문서 자동 작성)

· diagrams (클라우드 구조도를 표현하고, 파이션에서 이용 가능)

 

대부분 pip install XXX의 형태로 모두 설치가 가능합니다.

 

· 도메인 주도 설계 방법, 테스트 주도 개발에 의한 구현 과 같은 아키텍처 구현 방법에 대해서 ChatGPT를 이용해서 

내용을 살펴보고 샘플 코드를 구현합니다.

 

pip intall openai 

를 통해서  chatgpt의 api 키를 받아서 자연스럽게 챗봇화 구성을 하여서, input, ouput구성 하는 화면을 구성할수 있습니다.

 

· 장문 데이터 연계

외부의 장문 데이터와 연계하기 위해서 빠르게 색인을 생성하고 검색하는 실험에는 

단 몇불 만으로 대상이 되는 장문의 백터 데이터베이스를 구성할수 있는 아래 서비스가 유명합니다.

https://www.llamaindex.ai/

 

 

· 랭체인

마지막 장에서는 랭체인에 대해서 설명하고 동작 방식을 설명합니다.

대형 언어 모델 기반 서비스 개발에 접학한 라이브러리 입니다.

랭체인에서는 검색엔진의 검색 결과를 반화하는 도구가 있어 이런 요구 사항을 단 몇줄의 코드로 구현할수 있습니다.

pip install langchain을 통해서 우선 구성 테스트를 진행합니다.


댓글(0) 먼댓글(0) 좋아요(0)
좋아요
북마크하기찜하기 thankstoThanksTo
 
 
 
자바스크립트 + 리액트 디자인 패턴 - 자바스크립트와 리액트의 최신 패턴과 렌더링, 성능 패턴까지
애디 오스마니 지음, 윤창식 옮김 / 한빛미디어 / 2024년 8월
평점 :
장바구니담기


지금 시점에 JavaScript의 중요성은 매우 크게 작용합니다.

대표 SPA 프레임워크로 리액트도 가장 많이 사용하는 기술입니다.

 

이 책에서는 디자인 패턴이라는 부분이 js에 대한 부분인지, react에 대한 부분인지도 궁금합니다.

일반적인 디자인패턴 말고 js에서 사용하는 조금은 다른 형태의 디자인 패턴인지도 확인해보려고 합니다.

 

 

■ 책 살펴보기

· 책의 저자분은 크롬 리더이자 구글러 입니다. 가장 많이 사용하는 js에 대해서 최고의 전문가 입니다.

· 이책의 제목으로는 1판이지만, 기존에 Learing Javascript Design Patterns이 1판이고 SPA프레임워크의 등장으로 이러한 부분도

    업데이트가 되면서 이책이 출간되었습니다.

· 기본적인 디자인 패턴 및 리액트에서도 사용하면 좋은 좋은 사례들로 구성되어 있습니다.

 

 


■ 패턴에 대해서 다시 한번 생각하게 remind합니다.

· 무조건 패턴을 적용하지 않으면, 좋은 코드가 아닐까요? 과연 좋은 패턴은 무엇일까요?

우리는 프레임워크를 사용하며서, 우리가 의도 하지 않았지만 자연스럽게 디지인 패턴을 사용하고 있습니다.

Spring, React등 의 프레임워크를 통해서 공급자 패턴, 팩토리, 프록시 패턴등을 자연스럽게 사용하고 있습니다.

우리가 유지보수성등을 고려해서 코드를 작성하였는데, 그러한 부분이 흔히 알려진 Gof의 디자인패턴중에 한가지를 구현한 것일수 있습니다.

· 책의 도입부에서 저자분이 생각하는 패턴에 대해서 설명하고 javascript에서의 디자인 패턴을 동일하게 적용 가능하지만,

최근의 js의 다양한 문법 및 SPA의 특성을 고려하여서 적용하기 좋은 디자인 패턴에 대해서 정의가 필요하다고 생각합니다.

· 프로토 패턴이라는 용어를 처음 접하였는데, 완전한 패턴이 아닐수 있지고, 몇가지 핵심 요소가 빠져있을수 있는 코드 이지만 향후 프로젝트에 도움이 될 유용한 패턴이라고 정의합니다.

· 안티패턴에 대한 정의도 다시 한번 remind합니다.

· 디자인 패턴의 유형

· 자주 사용하는 패턴에 대해서 다시 한번 정의하고 가는 내용 구성이 좋았습니다.

 

 


■ 자바스크립트를 활용한 패턴 적용하기

· ES2015 버전 이후부터는 JS을 이용해서도 생성자를 가진 클래스를 만들 수 있게 되었습니다.

예전에는 java처럼 생성자를 가진 방식으로 생성할수 없었습니다.

확실히 이러한 부분을 캐치업하는 것이 다른 언어와의 차이점이고, 이 책을 통해서 새로운 지원 문법을 확인하고

디자인 패턴을 잘 적용할수 있는 방법을 확인 해볼 수 있습니다.

 

 

 

· 지금은 잘 사용하지 않지만, 초기 자바스크립트에서 사용하는 다양한 방법도 함께 소개되어지고 

디자인 패턴으로 활용하는 방법도 기존코드와 현재 문법이 혼용되어 있는 환경에서 도움이 됩니다.

 - 객체 리터럴 표기법, 모듈 패턴, AMD 모둘, CommonJS모듈

· 싱글톤 패턴

Java에서는 쉽게 구현 개발이 가능한데, JS를 통해서는 어떠한 방식으로 구현을 해야 하는지 어려움이 있으실수 있습니다.

ES2015+에서는 전역 인스턴스를 생성하는 것을 구성할수 있고, 샘플 코드 및 구현 방법도 설명되어집니다.

이러한 부분이 이 책에서 다른 디자인 패턴책들과 다른 좋은 점이라고 생각합니다.

다른 책에서는 java, c 언어를 통해서 샘플이 있지만, 이책은 JS에 관점을 가지고 접근한 책이라서 활용도가 높은것 같습니다.

 

 

 

· P.162) AJAX기반의 Jquery 애플리케이션 결합도 낮추기

지금도 예전에 구축되어 있는 서비스에는 Jquery를 많이 사용하고 있습니다. IE를 지원하면서 모바일화면의 처리를 위해서

Jquery를 많이 사용하고 있는데 이러한 결합도를 줄이는 부분에 대해서도 관련 내용을 다르고 있습니다.

 

무조건 디자인패턴을 사용하자는 것이 아니고 적용시에 장/단점을 소개하고, 

선택지가 여러개 있는 경우 예를 들어 중재자 패턴 vs 퍼사드 패턴에 대해서 유사점을 궁금해 하고 추상화 하였지만, 미묘한 차이점등

우리가 고민해볼 만한 사항을 소개합니다.

 

· 자바스크립트의 MC* 패턴

웹개발시 많이 사용하는 MVC패턴을 많이 사용합니다.

MVC (모델 - 뷰 - 컨트롤러)

MVP (모델 - 뷰 - 프리젠터)

MVVM (모델 - 뷰 - 뷰모델)

등이 패턴이 있는데, 어떠한 차이점이 있으며, 전통적인 MVC패턴과 어떻게 다른지 비교해봅니다.

이러한 내용은 꼭 디자인 패턴에 한정 짓지 말고, 전체적인 개발의 흐름을 파악하기에도 좋은 내용입니다.

 

·비동기 프로그래밍 패턴

js에서는 블로킹, 논블로킹에 대해서 잘 알고 있어야 합니다.

비동기(async, await), 프로미스(promise)와 같은 자바스크립트 언어의 기능은 비동기 코드를 더 쉽게 작성하게 해줍니다.

 

다양한 방식으로 개발을 유연하게 할수 있는 방법을 안내합니다.

 

 


■ 리액트 디자인 패턴

· 12장에서는 리액트에 대해서 다룹니다.

리액트의 기본 개념을 다시 한번 설명을 간단히합니다.

 - 고차 컴포넌트

 - 랜더링 Props 패턴

 - 리액트 Hooks 패턴

 - 상태 Hook

 - 정적 가져오기

 - 동적 가져오기

 - 코드 스플리팅

 - PRPL(push render pre-cache Lazy-load) 패턴

 - 로딩 우선 순위

 - 리스트 가상화

이러한 다양한 관점으로 리액트에서 모듈화 및 패턴을 고민해야 하는 사항들이 설명되어 집니다.

 

· 랜더링 패턴

개발 방식이 많이 변경되다 보니, 이제 랜더링을 어디서 하는지 방향성에 대해서 다양한 개념이 도입되었습니다.

보통 요약된 단어로 CSR, SSR등의 이름으로 이야기를 하는데 아래와 같이 정의를 하고, js코드를 통해서 

예시를 통해서 이해하고 도입을 할수있는 내용으로 구성되어 있습니다.

 

 

다양한 관점으로 디자인 패턴을 설명하는데 자바스크립트 및 자바스트립트를 이용한 프레임워크등을 활용하기 위한

여러가지 기술 및 코드제공을 통해서 적적하게 조금 더 나은 방향으로 코드 및 아키텍처 방향을 설계할 수 있게

도움을 주는 책이며 추천합니다.


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