전체 글 55

DIP (The Dependency Inversion Principle)

OOP의 핵심 개념 중 하나인 SOLID 중 D에 해당하는 원칙이다. DIP (The Dependency Inversion Principle) High level modules should not depend on low level modules. Both should depend on abstractions. Abstractions should not depend on details. Details should depend on abstractions. DIP란 위의 내용에 기반을 둔 내용이다. 즉, 상위 레벨의 모듈은 하위 레벨의 모듈에 의존해서는 안되며 그 abstractions에 의존해야한다. 또한, Abstractions은 detail한 내용에 의존해서는 안되며 Detail 또한 Abstract..

Spring Framework

1. Spring MVC DispatcherServlet 1. Client로부터 Request가 오면 Dispatcher Servlet 2. DispatcherServlet은 파라미터 정보, URL 등을 참고하여 HandlerMapping를 통해 해당 Request가 매핑된 Controller가 있는지 확인한 후, 어떤 Controller에서 처리할지 결정합니다. 3. Controller가 결정되었다면 DispatcherServlet은 해당 Request 정보가 담긴 오브젝트를 HandlerMapping으로 넘기고, 여기서 해당 Controller로 전달해줍니다. 4. Controller가 작업을 완료하면 그 결과를 다시 DispatcherServlet에 전달합니다. 5. 전달 받은 결과를 바탕으로 Di..

Spring Boot이란?

1. Spring Boot 이란? Production 레벨의 stand-alone application을 "run" 명령어 만을 이용하여 만들 수 있게 해준다. 2. Spring Boot의 특징 - stand-alone spinrg application을 만들어준다. - War 파일없이 Embedded Tomcat, jetty와 Undertow를 바로 사용할 수 있게 해준다. - build configuration을 쉽게 하기 위하여 "starter" dependency들을 제공한다. - Spring과 3rd party 라이브러리들을 쉽게 어디서나 사용할 수 있게 해준다. - metrics나 health check 등 producion-ready를 체크할 수 있는 기능을 제공한다. ( https://do..

Spring 이란?

1. Spring이란 자바 프로그래밍을 더 빠르고 쉽게 해주는 것이다. Speed, Simplicity와 Productivity에 중점을 두는 세계 최대의 Java Framework이다. “We use a lot of the tools that come with the Spring framework and reap the benefits of having a lot of the out of the box solutions, and not having to worry about writing a ton of additional code—so that really saves us some time and energy.” - SEAN GRAHAM, APPLICATION TRANSFORMATION LEAD, D..

API 게이트웨이와 Spring Cloud Zuul Filter

1. API Gateway API Gateway란 마이크로서비스 아키텍처(Microservice Architecture, MSA)에서 여러 클라이언트 요청을 적절한 서비스로 프록시하거나 라우팅하기 위한 서비스이다. MSA 개념이 대중화된 지금 API Gateway의 중요성도 더 커지고 있다. MSA에서는 도메인별로 하나 이상의 서비스와 그에 따른 서버가 존재하기 때문에 이 서비스를 사용하는 클라이언트 입장에서는 다수의 end point가 생기게 되며, 관리하기가 힘들다. 그래서 MSA 환경에서 서비스에 대한 도메인을 하나로 통합할 수 있는 API Gateway가 필요하다. API Gateway는 일반적으로 아래 역할을 수행한다. 트래픽 관리, CORS 지원, 권한 부여 및 액세스 제어, 제한, 모니터링 ..

Kubernetes Pod와 API 통신 - Ambassador

파드 내에서 API가 통신해야할 일이 있다. 이 때, 인증 등 복잡한 절차를 거쳐야 하는 경우가 많은데, 쉽게 사용할 수 있는 방법인 Ambassador가 있다. local에서 사용할 수 있는 kubectl proxy 명령어를 이용하여 localhost:8001로 kubernetes와 통신해본 적이 있을 것이다. 이를 응용한 방법이다. main container외에 kubectl proxy를 사용하는 것이다. kubectl-proxy.sh #!/bin/sh API_SERVER="https://$KUBERNETES_SERVICE_HOST:$KUBERNETES_SERVICE_PORT" CA_CRT="/var/run/secrets/kubernetes.io/serviceaccount/ca.crt" TOKEN="..

Elasticsearch (엘라스틱서치)의 Indexing 파일 - Segment

1. Segment 세그먼트는 Elastic Search(이하 ES)가 Lucene 라이브러리를 사용하여 생성하는 인덱싱 데이터의 단위로 복수 개의 파일로 구성 각 세그먼트들은 완전히 독립되어진 문서들의 집합이며 Inverted Index 구조로 생성된 실제 인덱싱 데이터로 구성되어짐 한번 생성된 세그먼트 파일은 수정이 불가능 (Immutability) 2. Segment File Path 아래 File Path에 인덱스 세그먼트 파일들이 위치 {data_path}/data/nodes/{node_num}/indices/{index_uuid}/{shard_num}/index/ Name Type Description {data_path} String (Dir Path) ES의 data를 저장하는 path {..

Universal Transformer (2018)

1. Universal Transformer Transformer 모델(https://jw92.tistory.com/31)은 계산을 일반화하기 어렵기 때문에 문장 단순 복사 등 기본적인 추론에서도 틀리는 경우가 있음 Weight를 공유해 Transformer를 일반화한 모델 Transition Function에는 CNN 혹은 FFNN 사용 2. Adaptive universal transformer 각 Symbol에 필요한 계산량을 조절하는 ACT (Adaptive Computation Time)을 Universal Transformer에 적용한 것 Weight를 공유하기 때문에 Symbol마다 layer 개수가 다른게 가능해짐

AI 2022.09.04
반응형