728x90
반응형

전체 글 74

클린 아키텍처 - 20장. 업무규칙 Business Rules

■ 20장 업무규칙 Business Rules 어플리케이션을 업무규칙과 플러그인으로 구분해 보자. ​ 업무규칙에는 컴퓨터 상으로 구현했는지와 상관없이 사업적으로 정의된 핵심 업무 규칙이 있다. 이것은 사람이 수동으로 실행하더라도 유효해야 한다. 가령 대출에 n% 이자를 부과한다는 것 등이 될 수 있다. 업무규칙은 핵심 규칙과 핵심 데이터를 가지고 있으며 이는 엔티티로 표현된다. ​ 반면 시스템의 자동화된 동작을 통해 정의되는 업무 규칙도 있는데, 신규 대출을 위해 사용자로부터 정보를 입력받아 신용도를 자동 계산하고 이를 통해 대출을 승인할지 거절할지 결정하는 업무라면 이는 핵심 업무규칙은 아니지만 유스케이스로 분류된다. 유스케이스는 자동화된 시스템이 사용되는 방법을 설명한다. ​ 엔티티는 자신을 제어하는..

클린 아키텍처 - 19장. 정책과 수준 Policy and Level

■ 19장 정책과 수준 Policy and Level ​ 소프트웨어 시스템은 정책을 기술한 것이고, 정책이 프로그램 핵심부의 전부라고 할 수 있다. ​ 정책에는 집계와 관련된 업무규칙을 처리하는 방식을 서술하는 것과 특정 보고서를 어떤 포맷으로 만들지를 서술하는 것, 입력 데이터를 어떻게 검증할지를 서술하는 것 등이 있을 수 있다. ​ 또한 수준이란 ‘입력과 출력까지의 거리’를 말한다. 입력과 출력 모두로부터 멀수록 정책의 수준은 높아진다. 좋은 아키텍처는 각 컴포넌트를 연결할 때 의존성의 방향이 저수준에서 고수준을 의존하도록 설계되어야 한다. ​ 아래 그림에서 Translate 컴포넌트는 입력과 출력에서부터 멀리 떨어져 있기 때문에 수준이 최고로 높다. 소스코드의 의존성은 점선의 방향이다. 모든 소스코..

<회귀모델>에서 '회귀 regression'의 의미

머신러닝 등 AI 영역을 보다보면 확율과 통계의 기본적인 내용을 알아야 하는 것들이 많이 있다. 여러가지 어려운 용어 중 이라는 것이 있는데, 이 용어는 한국말로 된 것도 이해가 안 가고, 그래서 영문인 을 봐도 당최 와 닿지가 않는다. 용어의 개념을 찾아봐도 라는 말의 뜻과의 연관성을 전혀 알 수가 없다. ​ 하도 답답해서 검색을 하다가 좋은 글이 있어서 퍼 왔다. 결론은, 회귀모델에서의 회귀는, '잔차가 평균으로 회귀하도록 만드는 것'이라고 대충 요약할 수 있다. 잔차는 실제 데이터와 예측 데이터 간의 차이이며, 잔차의 평균은 일반적으로 0이라고 한다. ​ 아래 글을 보다가 중간에 너무 어려워서 다 건너뛰고 처음과 결론만 봤다. 회귀 모델에서 '회귀'란 무엇인가? Tribute to error | 페..

클린 아키텍처 - 18장. 경계 해부학 Boundary Anatomy

■ 18장 경계 해부학 Boundary Anatomy ​ 경계의 예로는 단일체(monolith), 배포형 컴포넌트, 스레드, 로컬 프로세스, 서비스 정도가 있다. ​ 1. 단일체는 그냥 통으로 된 하나의 소프트웨어로 보면 된다. 그래서 사실상 물리적인 경계가 잘 드러나지 않는다. ​ 2. 배포형 컴포넌트는 dll, jar, gem, 유닉스 공유 라이브러리 등으로 배포 과정만 차이가 날 뿐 단일체와 동일하다. ​ 3. 스레드는 하나의 컴포넌트에 포함될 수도 있고 여러 컴포넌트에 분산될 수도 있으므로 사실 경계라고 할 수는 없다. (실행계획과 순서를 체계화하는 방법에 가깝다고 함) ​ 4. 로컬 프로세스는 각각 독립된 주소 공간에서 실행되므로 물리적 경계가 비교적 뚜렷하다. ​ 5. 서비스가 물리적으로 가장..

클린 아키텍처 - 17장. 경계: 선 긋기 Boundaries: Drawing Lines

■ 17장 경계: 선 긋기 Boundaries: Drawing Lines ​ 업무 요구사항(유스케이스)과 아무 관련이 없는 결정사항들, 이를테면, 프레임워크, 데이터베이스, 웹서버, 유틸리티 라이브러리, 의존성 주입 같은 것들은 결정을 최대한 뒤로 미뤄야 한다. 이러한 부수적인 것들이 빨리 결정될수록 제약이 많이 생기게 되며, 그렇게 되면 관련된 문제들과 일찍, 많이 맞닥뜨리게 된다. ​ 경계(선, Boundary)는 관련이 있는 것과 없는 것 사이에 그어야 하는데, 가령 GUI나 DB의 경우는 업무규칙과는 관련이 없으므로 이들 사이에 경계가 필요하다. ​ 아래 그림과 같이 DB와 GUI가 업무규칙을 참조하므로 이들이 업무규칙에 의존성을 가지고 있는 것이며, 이는 업무규칙은 DB와 GUI가 무엇이 되든(..

클린 아키텍처 - 16장. 독립성 Independence

​■ 16장 독립성 Independence ​ 잘 격리되어 독립적으로 개발 가능한 컴포넌트 단위로 시스템을 분할해야 한다. 쉽게 말하면, UI, 업무로직, DB 계층을 횡단으로 분리하고, 유스케이스를 종단으로 분리하여 씨줄과 날줄이 엮이는 패턴을 만들 수 있다. 이를 통해 개발 독립성과 배포 독립성을 얻을 수 있다. ​ 계층과 유스케이스를 분리하는 방법은 소스 수준, 배포 수준, 서비스 수준의 분리가 있다. 서비스 수준의 분리가 가장 좋긴 하지만 고비용의 문제가 있기 때문에 일단 컴포넌트 단위까지 분리하고 추후 서비스 수준의 분리가 가능하도록 가능성을 열어 두는 것이 현실적으로 적합하다. ​ ​ ​

클린 아키텍처 - 15장. 아키텍처란? What Is Architecture?

◆ Part 5 아키텍처 Architecture ​ ■ 15장 아키텍처란? What Is Architecture? ​ 아키텍처의 주된 목적은 시스템의 생명주기를 지원하는 것이다. 아키텍처의 궁극적인 목표는 시스템의 수명과 관련된 비용은 최소화하고, 프로그래머의 생산성은 최대화하는 데에 있다. ​ 좋은 아키텍트는 세부사항을 정책으로부터 분리해 내고 어떤 경우라도 정책이 세부사항에 의존하지 않도록 하는 것이다. 정책은 업무의 규칙과 절차이며, 세부사항은 입출력 장치 DB, 웹시스템, 서버, 프레임워크, 통신 프로토콜 등을 말한다. ​ ​ ​

클린 아키텍처 - 14장. 컴포넌트 결합 Component Coupling

■ 14장 컴포넌트 결합 Component Coupling ​ 컴포넌트 사이의 관계에 관련 3가지 원칙은 아래와 같다. ​ 1. 의존성 비순환 원칙 ADP: Acyclic Dependencies Principle 2. 안정된 의존성 원칙 SDP: Stable Dependencies Principle 3. 안정된 추상화 원칙 SAP: Stable Abstractions Principle ​ 1. 의존성 비순환 원칙 Acyclic Dependencies Principle, ADP 컴포넌트 간의 의존성 그래프는 순환되어서는 안 된다. 순환을 제거하기 위해서는 사이에 인터페이스를 만들어서 의존성 역전 원칙 DIP를 적용해야 한다. ​ 2. 안정된 의존성 원칙 Stable Dependencies Principle..

딥러닝 최신 용어정리 #9 심층압축 이진신경망 OnceForAll신경망 지식증류 앙상블 Ensemble MLPerf

Chapter 05 딥러닝의 효율을 향상시키는 다양한 기술 ​ 딥러닝은 높은 예측 성능을 보여주지만, 방대한 계산과 높은 전력 소모라는 단점이 존재한다. 따라서 딥러닝을 가볍게 하는 접근, 즉 알고리즘 측면에서 인공신경망을 줄이는 것과 딥러닝에 최적화된 하드웨어를 개발하는 기술이 연구되고 있다. ​ ​ ■ 심층 압축 (Deep Compression) ​ 네트워크 프루닝, 양자화, 허프만 코딩 기법을 도입한 방법이다. 허프만 코딩은 주어진 정보를 손실없이 압축하는 방법이다. 심층 압축은 기존 프루닝 기법의 90% 보다 큰 97%의 효율을 보장한다. ​ ​ ■ 이진신경망 (Binary Neural Network) ​ 일반적인 인공신경망이 실수의 단정밀도 32비트를 사용하는 데 반해 이진신경망은 1비트로 표현..

딥러닝 최신 용어정리 #8 학습용하드웨어 FPGA TPU 추론용하드웨어 모바일네트워크 깊이별로구분가능한합성곱 네트워크프루닝

Chapter 05 딥러닝의 효율을 향상시키는 다양한 기술 ​ 딥러닝은 높은 예측 성능을 보여주지만, 방대한 계산과 높은 전력 소모라는 단점이 존재한다. 따라서 딥러닝을 가볍게 하는 접근, 즉 알고리즘 측면에서 인공신경망을 줄이는 것과 딥러닝에 최적화된 하드웨어를 개발하는 기술이 연구되고 있다. ​ ​ ■ 딥러닝의 학습용 하드웨어 ​ 딥러닝 계산에 필요한 하드웨어는 크게 학습용와 추론용으로 나눌 수 있다. 학습용 하드웨어는 대부분 GPU를 사용하며 다수의 GPU를 하나의 신경망 학습에 사용하는 방법이 있으나 이는 전력을 많이 소모한다. 그외 딥러닝에 최적화된 하드웨어로는 FPGA나 구글이 개발한 TPU가 있다. ​ ■ 딥러닝의 추론용 하드웨어 ​ 딥러닝 추론의 예로는 자율주행자동차에서 카메라 영상과 센서..

반응형