전체 글

전체 글

    WebLLM, EEVE 모델을 Web GPU로 서빙하기

    WebLLM, EEVE 모델을 Web GPU로 서빙하기

    오늘은 브라우저에서 직접 언어 모델 추론을 가능하게 하는 고성능 인퍼런스 엔진인 WebLLM에 대해 다뤄 보고자 합니다.WebLLM은 하드웨어 가속을 통해 서버 지원 없이 모든 작업을 브라우저 내에서 실행하며, WebGPU로 가속됩니다. 이러한 기능을 통해 누구나 AI 비서를 구축하면서도 개인정보를 보호할 수 있는 다양한 기회를 얻을 수 있습니다. GitHub - mlc-ai/web-llm: High-performance In-browser LLM Inference EngineHigh-performance In-browser LLM Inference Engine . Contribute to mlc-ai/web-llm development by creating an account on GitHub.git..

    Llama.cpp, GGUF 포맷, 그리고 양자화(Quantization)

    Llama.cpp, GGUF 포맷, 그리고 양자화(Quantization)

    오늘은 LLM(Large Language Model) 인퍼런스에서 모델 사이즈를 줄이고 더 빠르게 추론하기 위한 방법론 중 가장 인기가 많은 양자화(Quantization)에 대해 다루겠습니다. 양자화는 모델의 크기를 축소하고 추론 속도를 향상시키는 기술로, 특히 LLM에서 효과적입니다.양자화는 모델의 가중치와 활성화를 저비트(bit) 정밀도로 변환하여 메모리 사용량을 줄이고 계산 속도를 높이는 방법입니다. 예를 들어, 32비트 부동소수점 수치를 8비트 정수로 변환하면 메모리 사용량이 약 4분의 1로 감소하고, 계산 속도도 크게 향상됩니다. 이는 특히 하드웨어 자원이 제한된 환경에서 매우 유용합니다.이전 블로그 글에서 양자화에 대한 기본적인 개념과 다양한 기법을 다루었으니, 자세한 내용을 알고 싶다면 해..

    Triton Inference Server #5. Python Backend

    Triton Inference Server #5. Python Backend

    딥러닝 모델의 성능을 최적화하고 배포하는 것은 현대 AI 애플리케이션의 핵심 요소 중 하나입니다. 그 중에서도 모델을 효율적으로 관리하고 운영하는 것은 매우 중요합니다. Triton Inference Server는 이러한 요구에 부응하기 위해 설계된 강력한 도구입니다. 이번 시리즈에서는 Triton Inference Server에 대해 샅샅히 파헤처보는 글을 작성해보려고 합니다.  지난 포스트 살펴보기 Triton Inference Server #1. Triton Inference Server란?딥러닝 모델의 성능을 최적화하고 배포하는 것은 현대 AI 애플리케이션의 핵심 요소 중 하나입니다. 그 중에서도 모델을 효율적으로 관리하고 운영하는 것은 매우 중요합니다. Triton Inference Server..

    Triton Inference Server #4. Model Configuration

    Triton Inference Server #4. Model Configuration

    딥러닝 모델의 성능을 최적화하고 배포하는 것은 현대 AI 애플리케이션의 핵심 요소 중 하나입니다. 그 중에서도 모델을 효율적으로 관리하고 운영하는 것은 매우 중요합니다. Triton Inference Server는 이러한 요구에 부응하기 위해 설계된 강력한 도구입니다. 이번 시리즈에서는 Triton Inference Server에 대해 샅샅히 파헤처보는 글을 작성해보려고 합니다.  지난 포스트 다시보기 Triton Inference Server #1. Triton Inference Server란?딥러닝 모델의 성능을 최적화하고 배포하는 것은 현대 AI 애플리케이션의 핵심 요소 중 하나입니다. 그 중에서도 모델을 효율적으로 관리하고 운영하는 것은 매우 중요합니다. Triton Inference Server..

    Triton Inference Server #3. Model Management & Repository

    Triton Inference Server #3. Model Management & Repository

    딥러닝 모델의 성능을 최적화하고 배포하는 것은 현대 AI 애플리케이션의 핵심 요소 중 하나입니다. 그 중에서도 모델을 효율적으로 관리하고 운영하는 것은 매우 중요합니다. Triton Inference Server는 이러한 요구에 부응하기 위해 설계된 강력한 도구입니다. 이번 시리즈에서는 Triton Inference Server에 대해 샅샅히 파헤처보는 글을 작성해보려고 합니다. 지난 포스트 다시보기 Triton Inference Server #1. Triton Inference Server란?딥러닝 모델의 성능을 최적화하고 배포하는 것은 현대 AI 애플리케이션의 핵심 요소 중 하나입니다. 그 중에서도 모델을 효율적으로 관리하고 운영하는 것은 매우 중요합니다. Triton Inference Serverd..

    주요 LLM API 비용 정리 (ChatGPT, Gemini, Claude, HyperClova + LLaMA3)

    주요 LLM API 비용 정리 (ChatGPT, Gemini, Claude, HyperClova + LLaMA3)

    TL; DRLLaMA3 70B 모델을 직접 운영할 경우, 최대 효율에서는 GPT-4 Turbo, Gemini Pro 1.5, Claude 3 Sonnet, 그리고 HyperCLOVA HCX-003 모델과 비교했을 때 훨씬 더 비용 효율적으로 서비스를 제공할 수 있습니다.실제 서비스 프로덕션 환경에서는 자원을 100% 활용하는 경우가 매우 드물기 때문에, 이러한 최대 효율성만을 기준으로 결정을 내리기보다는 비용 효율성과 자원 활용률을 종합적으로 고려하는 것이 중요합니다.최근 OpenAI를 포함한 여러 업체들이 Batch API를 도입하여 제공하고 있습니다. 이러한 배치 API를 활용하면, 개별 요청을 처리할 때보다 비용을 훨씬 절약하면서 추론 작업을 수행할 수 있습니다.  LLM API 비용이 포스트에서는..

    Efficient LLM Inference with KCache

    Efficient LLM Inference with KCache

    🔥🔥[KCache] EFFICIENT LLM INFERENCE WITH KCACHE(@Qiaozhi He, Zhihua Wu)https://arxiv.org/pdf/2404.18057TL; DR이 논문은 "KCache"라는 새로운 기술에 대해 설명합니다. 이 기술은 대형 언어 모델(LLM)의 추론 과정에서 메모리 병목 현상을 완화하고 시스템 처리량을 40% 향상시키면서도 정확성을 유지하는 방법을 제시합니다. KCache는 기존의 KV Cache를 대체하여, 메모리 사용량을 줄이면서 추론 속도를 개선합니다. 이를 위해 K 캐시는 HBM(High Bandwidth Memory)에 유지하고, V 캐시는 CPU 메모리에 저장하여 필요한 정보만 동적으로 선택하고 GPU로 복사합니다.또한, 이 논문은 LLM의 ..

    Triton Inference Server #2. 모델 스케쥴링

    Triton Inference Server #2. 모델 스케쥴링

    딥러닝 모델의 성능을 최적화하고 배포하는 것은 현대 AI 애플리케이션의 핵심 요소 중 하나입니다. 그 중에서도 모델을 효율적으로 관리하고 운영하는 것은 매우 중요합니다. Triton Inference Server는 이러한 요구에 부응하기 위해 설계된 강력한 도구입니다. 이번 시리즈에서는 Triton Inference Server에 대해 샅샅히 파헤처보는 글을 작성해보려고 합니다. 지난 포스트 다시보기 Triton Inference Server #1. Triton Inference Server란?딥러닝 모델의 성능을 최적화하고 배포하는 것은 현대 AI 애플리케이션의 핵심 요소 중 하나입니다. 그 중에서도 모델을 효율적으로 관리하고 운영하는 것은 매우 중요합니다. Triton Inference Serverd..

    Triton Inference Server #1. Triton Inference Server란?

    Triton Inference Server #1. Triton Inference Server란?

    딥러닝 모델의 성능을 최적화하고 배포하는 것은 현대 AI 애플리케이션의 핵심 요소 중 하나입니다. 그 중에서도 모델을 효율적으로 관리하고 운영하는 것은 매우 중요합니다. Triton Inference Server는 이러한 요구에 부응하기 위해 설계된 강력한 도구입니다. 이번 시리즈에서는 Triton Inference Server에 대해 샅샅히 파헤처보는 글을 작성해보려고 합니다.  Triton Inference ServerStandardizes model deployment and delivers fast and scalable AI in production.developer.nvidia.com  Triton Inference Server란?Triton Inference Server는 NVIDIA에서 개..

    LLM 애플리케이션 개발 훑어보기 - LangChain #3 Model I/O

    LLM 애플리케이션 개발 훑어보기 - LangChain #3 Model I/O

    Model I/O LangChain 패키지는 NLP 어플리케이션을 원활하게 만들기 위해서 필요한 여러 모듈을 제공합니다. 오늘은 그 중 Model I/O와 관련된 내용을 다룹니다. 이 모듈을 통해 LangChain은 모든 언어 모델과 상호 작용하고, 모델에 대한 입력을 관리하고 출력에서 정보를 추출하는 등의 작업을 수행할 수 있습니다. Prompts 언어 모델에 입력되는 것은 보통 프롬프트라 불립니다. 종종 앱에서 사용자 입력은 모델에 직접적으로 입력되는 것이 아닙니다. 그 대신, 사용자의 입력은 어떤 방식으로든 변형되어 최종적으로 모델에 들어가는 문자열 또는 메시지의 형태로 생성됩니다. 사용자 입력을 받아 최종 문자열 또는 메시지로 변환하는 객체를 PromptTemplate이라고 합니다. LangCha..

    LLM 애플리케이션 개발 훑어보기 - LangChain #2 LangChain Expression Language (LCEL)

    LLM 애플리케이션 개발 훑어보기 - LangChain #2 LangChain Expression Language (LCEL)

    LangChain Experssion Language(LCEL) LangChain Expression Language(LCEL)은 체인을 쉽게 구성할 수 있는 선언적 방식입니다. LCEL은 가장 간단한 "프롬프트 + LLM" 체인부터 가장 복잡한 체인까지 코드 변경 없이 프로토타입을 프로덕션에 적용하는 것을 지원하도록 설계되었습니다. LangChain 공식 문서에서는 LCEL을 사용해야 하는 이유를 다음과 같이 소개하고 있습니다. Streaming support: LCEL로 체인을 구축하면 첫 번째 토큰에 도달하는 시간(첫 번째 출력 청크가 나올 때까지 경과한 시간)을 최대한 단축할 수 있습니다. Async support: LCEL로 구축된 모든 체인은 동기식 API(예: 프로토타이핑 중 Jupyter ..

    LLM 애플리케이션 개발 훑어보기 - LangChain #1 Intro 및 QuickStart

    LLM 애플리케이션 개발 훑어보기 - LangChain #1 Intro 및 QuickStart

    Introduction LangChain은 인공 지능(AI) 및 그 기계 학습 하위 집합으로 작업하는 소프트웨어 개발자가 대규모 언어 모델을 다른 외부 구성 요소와 결합하여 LLM 기반 애플리케이션을 개발할 수 있는 오픈 소스 프레임워크입니다. LangChain의 목표는 OpenAI의 GPT-3.5 및 GPT-4와 같은 강력한 LLM을 다양한 외부 데이터 소스에 연결하여 자연어 처리(NLP) 애플리케이션의 이점을 활용하고 생성하는 것입니다. 파이썬, 자바스크립트 또는 타입스크립트 프로그래밍 언어에 대한 경험이 있는 개발자, 소프트웨어 엔지니어, 데이터 과학자는 해당 언어로 제공되는 LangChain의 패키지를 사용할 수 있습니다. LangChain은 2022년 공동 창립자인 해리슨 체이스와 안쿠시 골라에..

    S-LoRA: Serving Thousands of Concurrent LoRA Adapters

    S-LoRA: Serving Thousands of Concurrent LoRA Adapters

    github: https://github.com/S-LoRA/S-LoRA paper: https://arxiv.org/abs/2311.03285 pretrain-then-finetune LLM 배포에는 일반적으로 pretrain-then-finetune 패러다임이 채택됩니다. Low-Rank Adaptation (LoRA)는 parameter-efficient fine-tuning(PEFT) method로써, base model을 여러 tasks에 적용하는 데 자주 사용되며, 그 결과 하나의 base model에서 파생된 상당한 양의 LoRA adapter가 생성됩니다. 이러한 패러다임은 서비스를 제공하는 동안 batched inference에 상당한 기회 요인을 제공합니다. 이러한 기회를 활용하기 위해..

    LLM 인퍼런스 훑어보기 (6) - quantization

    LLM 인퍼런스 훑어보기 (6) - quantization

    이전 포스트에서는 LLM 인퍼런스에서 batching 기법의 중요성을 알아보았고, GPU util을 극대화하기 위한 batching 기법인 continuous batching에 대해서 알아보았습니다. continuous batching에 대해 자세히 알아보고 싶으신 분들은 이전 포스트를 참고하시면 좋을 것 같습니다. LLM 인퍼런스 훑어보기 (5) - continuous batching 이전 포스트에서는 kernel funsion에 대해 알아보는 내용을 다뤘었습니다. 커널 퓨전의 의미, 구현 방법, 그리고 활용 사례에 대해 자세히 알아보고 싶으신 분들은 이전 포스트를 참고하시면 좋을 dytis.tistory.com 오늘은 LLM 인퍼런스에서 메모리 효율화 기법 중 하나인 quantization에 대해서 ..

    LLM 인퍼런스 훑어보기 (5) - continuous batching

    LLM 인퍼런스 훑어보기 (5) - continuous batching

    이전 포스트에서는 kernel funsion에 대해 알아보는 내용을 다뤘었습니다. 커널 퓨전의 의미, 구현 방법, 그리고 활용 사례에 대해 자세히 알아보고 싶으신 분들은 이전 포스트를 참고하시면 좋을 것 같습니다. LLM 인퍼런스 훑어보기 (4) - kernel fusion 이전 포스트에서는 KV Cache에 대해 더 깊게 알아보는 내용을 다뤘었습니다. 주로 Hugging Face Transformers의 구현체와 vLLM 프로젝트의 구현체를 탐구해 보았죠. 더 자세한 내용은 아래 링크에서 확인하 dytis.tistory.com 오늘은 LLM 인퍼런스에서 Batching 기법에 대해서 다루고자 합니다. Batch ML에서 "batch"는 일반적으로 훈련 데이터를 나누는 단위를 나타냅니다. 전체 데이터셋을..

    LLM 인퍼런스 훑어보기 (4) - kernel fusion

    LLM 인퍼런스 훑어보기 (4) - kernel fusion

    이전 포스트에서는 KV Cache에 대해 더 깊게 알아보는 내용을 다뤘었습니다. 주로 Hugging Face Transformers의 구현체와 vLLM 프로젝트의 구현체를 탐구해 보았죠. 더 자세한 내용은 아래 링크에서 확인하실 수 있습니다: LLM 인퍼런스 훑어보기 (3) - KV Cache (deep dive) 이전 포스트에서는 트랜스포머의 구조와 어텐션 메커니즘이 무엇인지 다루었다. 그리고 LLM 인퍼런스에서 KV Cache가 무엇이며, 왜 도입되어 사용되는지에 대해서 다뤘다. 지난 포스트는 아래 링 dytis.tistory.com 오늘은 LLM 인퍼런스 가속화 방법 중 하나로 알려진 "커널 퓨전 (kernel fusion)"에 대해 알아보려고 합니다. Kernel fusion GPU는 주로 다양한..

    torch.distributed.init_process_group

    https://pytorch.org/docs/stable/distributed.html#torch.distributed.init_process_group Distributed communication package - torch.distributed — PyTorch 2.0 documentation Shortcuts pytorch.org 문서에 나와있는 설명으로는 default process group을 초기화하고, distributed package 또한 초기화하는 동작을 한다. process group을 초기화하는 방법에는 크게 두가지의 주된 방법이 있다: store, rank, world_size를 명시적으로 입력하는 방법 peer들을 어떻게/어디서 찾을지에 대해 나타내는 init_method를 입..

    LLM 인퍼런스 훑어보기 (3) - KV Cache (deep dive)

    LLM 인퍼런스 훑어보기 (3) - KV Cache (deep dive)

    이전 포스트에서는 트랜스포머의 구조와 어텐션 메커니즘이 무엇인지 다루었다. 그리고 LLM 인퍼런스에서 KV Cache가 무엇이며, 왜 도입되어 사용되는지에 대해서 다뤘다. 지난 포스트는 아래 링크를 참조하자. LLM 인퍼런스 훑어보기 (2) - KV Cache 앞선 포스트에서는 Large Language Model (LLM) 인퍼런스의 중요성과 왜 우리는 LLM을 효율적으로 활용해야 하는지를 알아보았다. 더불어, LLM을 이용한 문장 생성은 autoregressive generation이며, 해당 생성 dytis.tistory.com 이번 포스트에서는 다른 가속 방법을 다루려고 했었는데, KV Cache에 대해서 좀 더 deep dive 해보는 내용을 작성해보려고 한다. deep dive 내용은 llam..

    LLM 인퍼런스 훑어보기 (2) - KV Cache

    LLM 인퍼런스 훑어보기 (2) - KV Cache

    앞선 포스트에서는 Large Language Model (LLM) 인퍼런스의 중요성과 왜 우리는 LLM을 효율적으로 활용해야 하는지를 알아보았다. 더불어, LLM을 이용한 문장 생성은 autoregressive generation이며, 해당 생성 과정에서 사용할 수 있는 다양한 디코딩 전략을 소개하였다. 지난 포스트는 아래 링크를 참조하자. https://dytis.tistory.com/53 LLM 인퍼런스 훑어보기 (1) - LLM을 이용한 문장 생성 인공 지능과 기계 학습 기술의 발전은 현대 사회에 혁명적인 변화를 가져왔다. 특히, Large Language Model(LLM)과 같은 최신 기술은 자연어 처리 및 이해 분야에서 차별화된 성능을 보이며, 다양한 분 dytis.tistory.com 이번 ..

    LLM 인퍼런스 훑어보기 (1) - LLM을 이용한 문장 생성

    LLM 인퍼런스 훑어보기 (1) - LLM을 이용한 문장 생성

    인공 지능과 머신 러닝의 급속한 발전은 특히 자연어 처리 분야에서 주목할 만한 진전을 이루었습니다. 이 분야에서 Large Language Model(LLM)은 그 우수한 성능으로 다양한 서비스와 애플리케이션의 혁신을 가능하게 했습니다. 이러한 모델들은 방대한 양의 데이터와 복잡한 네트워크 구조를 바탕으로 학습되어, 상당한 컴퓨팅 자원과 시간을 필요로 합니다.LLM은 언어 이해와 생성 작업에서 뛰어난 결과를 보여주며, 이를 가능하게 하는 기술적 구현은 특히 중요합니다. 실제 서비스에 LLM을 적용하기 위해서는 모델의 인퍼런스가 효율적이어야 하며, 이는 컴퓨팅 자원을 적절히 관리하고 최적화하는 과정을 포함합니다. 효율성과 효과성은 이 모델을 경제적으로 운용하면서도 최대의 성능을 발휘하도록 하는 핵심 요소입..

    강의 노트: LoRa로 빠르게 나만의 모델을 만들어보자

    강의 노트: LoRa로 빠르게 나만의 모델을 만들어보자

    본 정리글은 "[챗GPT 러닝데이 | 챗GPT말고 LLM] LoRa로 빠르게 나만의 모델을 만들어보자 - 김용담"을 보고 작성하였습니다. LoRa가 등장한 배경 Large-Scale Pretrained Model 대용량 데이터와 대규모 파라미터로 학습된 모델들 GPT-3 (175B) LSPM limitation Over-parametrized model이다 보통 pre-trained model을 fine-tuning해서 donwstream task를 푸는데, 필요한 정보는 일부임 기존 연구들을 통해서 필요한 정보는 'intrinsic dimension'에 있을 것이라고 판단했음 이러한 intrinsic dimension을 찾기 위해 'Low-Rank space'로 변환하는 방식을 사용하면 더 적은 파라미..

    [GPT로 영어 공부] 23. 07. 06

    업무를 하면서 영어 회화의 중요성을 느끼고 있는 요즘입니다. openAI의 chatGPT에게 영어를 배워보면 재미있을 것 같아서, 자주자주 GPT와 놀아볼 예정입니다. 이 대화의 instruction 및 prompt는 ChatGPT에게 생성 요청하였습니다. Me Let's have a small talk in English! What topic would you like to discuss? ChatGPT Sure, let's have a small talk! How about we discuss travel? It's always interesting to talk about different destinations, experiences, and travel tips. Do yo..

    강의 노트: 입문 - 자연어처리 시작하기

    본 정리글은 "[챗GPT 러닝데이] 입문 - 자연어처리 시작하기 - 김준영"을 보고 작성하였습니다. 자연어 처리? 자연어 처리 = 인간의 언어 텍스트를 컴퓨터로 표현하기 근본은 사실 확률적 언어 생성이다. => 입력된 제시 조건(문장, 단어 등)에서부터 내용을 잘 파악해서 어떤 말들이 이어서 나올 가능성이 높았는가? 컴퓨터로 문장과 문단의 의미를 다루기 위해서는 문장을 형태소로 분리하고 -> 토큰화(tokenizing) 형태소마다의 의미를 수로 표현할 수 있어야 함 -> 임베딩(embedding) Tokenizer 크게 두가지 tokenizer가 있음 전문가 분석/지도학습 기반 Okyt, Komoran, Mecab, Hannanum, Kkma 등 비지도학습 기반 sentencepiece, soynlp 등..

    [GPT로 영어 공부] 23. 07. 05

    업무를 하면서 영어 회화의 중요성을 느끼고 있는 요즘입니다. openAI의 chatGPT에게 영어를 배워보면 재미있을 것 같아서, 자주자주 GPT와 놀아볼 예정입니다. 이 대화의 instruction 및 prompt는 ChatGPT에게 생성 요청하였습니다. Me Let's have a small talk in English! What topic would you like to discuss? ChatGPT Sure! How about we discuss traveling? It's always a fascinating topic. Where is your favorite travel destination, and what makes it special to you? Me traveling?..

    [Storage] Object vs File vs Block Storage: 차이점이 무엇인가?

    파일, 개체 및 블록 스토리지, 주요 차이점 및 요구 사항에 가장 적합한 유형을 살펴보십시오. 조직의 데이터는 가장 귀중한 자산 중 하나입니다. 고객 정보, 빅 데이터 분석, 재무 정보, 직원 기록, 맞춤형 애플리케이션 등 각 데이터 또는 더 큰 데이터 세트는 정보를 저장하는 위치와 방법에 대한 중요한 결정을 내려야 합니다. 조직에서 여러 유형의 스토리지를 사용하는 경우가 많지만 스토리지는 데이터 수준에서 결정해야 합니다. 객체 스토리지란 무엇입니까? 개체 스토리지 는 데이터를 별도의 독립된 단위로 나누고 모든 개체가 동일한 수준에 있는 평평한 환경에 다시 저장되는 시스템입니다. 파일 저장소에 사용되는 것과 같은 폴더나 하위 디렉터리가 없습니다. 또한 오브젝트 스토리지는 모든 데이터를 단일 파일에 함께 ..

    [Traefik] Traefik Proxy

    [Traefik] Traefik Proxy

    Traefik Proxy Documentation - Traefik Welcome Traefik is an open-source Edge Router that makes publishing your services a fun and easy experience. It receives requests on behalf of your system and finds out which components are responsible for handling them. What sets Traefik apart, besides it doc.traefik.io Architecture Overview traefik은 모든 요청을 인터셉트하고 해당하는 백엔드 서버에 라우트함 전통적인 리버스 프록시들과는 다르게, serv..

    [Istio] Introduction - Istio란?

    [Istio] Introduction - Istio란?

    이 글은 istio 공식 문서에서 발췌한 내용들로 구성되어 있습니다. The Istio service mesh What is Service Mesh? 일반적으로 모던 어플리케이션들은 몇몇의 이산적인 비즈니스 로직을 수행하는 분산된 마이크로서비스 집합들로 설계됨 서비스메시는 전용 인프라 계층(dedicated infrastructure layer)이라서 자체 코드를 추가하지 않고도 observability, traffic management, security 같은 기능을 추가할 수 있음 "서비스 메시"라는 용어는 이 패턴을 구현하는 데 사용하는 소프트웨어 유형과 해당 소프트웨어를 사용할 때 생성되는 보안 또는 네트워크 도메인을 모두 설명 운영 요구사항: 검색, 로드 밸런싱, 장애 복구, 메트릭 및 모니터링..

    [마이크로서비스 패턴] 분해 전략

    [마이크로서비스 패턴] 분해 전략

    마이크로서비스 아키텍처란 무엇인가? 마이크로서비스 아키텍처의 핵심 사상은 기능 분해이다. 이전에는 확장성, 신뢰성, 보안 등이 아키텍처의 주요 목표였지만, 이제는 신속, 안전하게 소프트웨어를 전달하는 능력도 매우 중요해졌다. 마이크로서비스 아키텍처는 관리성, 테스트성, 배포성이 높은 아키텍처 스타일. ▶ 소프트웨어 아키텍처의 4+1 뷰 모델 애플리케이션 아키텍처를 바라보는 관점은 다양하다. 필립 크러첸(Phillip Krutchen)은 소프트웨어 아키텍처가 4+1 뷰 모델이라고 기술한 논문을 발표했다. 4+1 뷰 모델은 소프트웨어 아키텍처를 바라보는 상이한 4뷰를 정의한다. 논리 뷰 (logical view): 개발자가 작성한 소프트웨어 엘리먼트: 클래스, 패키지 (객체 지향). 상속(inheritanc..

    [마이크로 서비스 패턴] 모놀리식 지옥에서 벗어나라

    [마이크로 서비스 패턴] 모놀리식 지옥에서 벗어나라

    FTGO 애플리케이션 아키텍처 모놀리스(monolith): 일체형 비즈니스 로직 각자가 도메인 객체 컬렉션인 모듈(예: 주문 관리, 배달 관리, 과금, 지불)로 구성됨 외부 시스템과 연계하는 어댑터 REST API, 웹 UI 어댑터 등 비즈니스 요청을 호출하여 처리하는 인바운드 어댑터 비즈니스 로직에서 MySQL DB에 접근하거나 트윌리오, 스트라이프 등 클라우드 서비스를 호출하게 해주는 아웃바운드 어댑터 모놀리식 아키텍처의 장점 규모가 작은 초기에는 모놀리식 아키텍처의 장점이 많았음 개발이 간단 애플리케이션을 쉽게 변경할 수 있음 테스트하기 쉬움 배포하기 쉬움 확장하기 쉬움 하지만 시간이 흐를수록 개발, 테스트, 배포, 확장하기가 쉽지 않음 모놀리식 지옥의 실상 너무 복잡해서 개발자가 주눅 듬 개발이 ..

    [스파크 완벽 가이드] Part 3. 저수준 API

    [스파크 완벽 가이드] Part 3. 저수준 API

    대부분의 상황에서는 구조적 API를 사용하는 것이 좋다. 그러나 비즈니스가 기술적 문제를 고수준 API를 사용해 모두 처리할 수 있는 것은 아니므로, 스파크의 저수준 API를 사용해야 할 수도 있다. CHAPTER 12. RDD 사용자가 실행한 모든 DataFrame이나 Dataset 코드는 RDD로 컴파일된다. RDD는 간단히 말해 불변성을 가지며 병렬로 처리할 수 있는 파티셔닝된 레코드의 모음이다. RDD의 레코드는 자바, 스칼라, 파이썬의 객체일 뿐이다. 또한 구조적 API와는 다르게 레코드의 내부 구조를 스파크에서 파악할 수 없으므로, 최적화를 하려면 훨씬 많은 수작업이 필요하다. RDD에는 수많은 하위 클래스가 존재하며, DataFrame API에서 최적화된 물리적 실행 계획을 만드는데 대부분 ..