반응형

SW/마이크로서비스 46

쿠버네티스란 무엇인가: 컨테이너 오케스트레이션의 필수 도구

오늘은 현대 소프트웨어 스택의 확장을 위한 강력한 플랫폼인 '쿠버네티스(Kubernetes)'에 대해 알아보겠습니다. 쿠버네티스가 왜 이렇게 중요한 도구로 자리잡았는지, 그리고 이 도구가 어떤 기능을 제공하는지에 대해 설명하겠습니다.  쿠버네티스란 무엇인가?쿠버네티스는 컨테이너화된 애플리케이션의 배포, 스케일링, 관리를 자동화하는 오픈소스 플랫폼입니다. 쉽게 말해, 쿠버네티스는 수백 개, 수천 개의 개별 컨테이너로 구성된 애플리케이션을 조율하는 지휘자와 같습니다. 구글에서 처음 개발된 쿠버네티스는 물리적, 가상 환경, 온프레미스에서 클라우드까지 다양한 환경에서 복잡한 분산 애플리케이션을 관리하기 위한 솔루션으로 자리잡았습니다.  쿠버네티스가 중요한 이유쿠버네티스가 필수적인 도구가 된 이유는 마이크로서비스..

소프트웨어 개발의 진화: 워터폴에서 애자일, 데브옵스 그리고 그 너머로

소프트웨어 개발은 빠르게 변화하는 기술 세계 속에서 끊임없이 혁신을 추구하며 진화해왔습니다. 초기의 워터폴(Waterfall) 모델부터 애자일(Agile), **데브옵스(DevOps)**에 이르기까지 다양한 방법론이 등장하며 소프트웨어 개발 방식을 변화시켜 왔습니다. 이러한 발전은 효율성, 품질, 그리고 적응력을 높이기 위한 노력이 반영된 결과입니다.특히 최근 들어 AI와 저코드/노코드(low-code/no-code) 플랫폼이 소프트웨어 개발의 미래를 이끌어가고 있으며, 개발자들은 점점 더 많은 자동화 도구와 협업 툴을 활용하여 빠르고 정확한 소프트웨어를 제공하고 있습니다. 본 글에서는 소프트웨어 개발의 주요 진화 과정을 살펴보고, 미래에 어떤 변화가 우리를 기다리고 있는지 알아보겠습니다.   1. 워터..

Remult: 개발자가 원하는 오픈 소스 백엔드-프론트엔드 프레임워크

애플리케이션 개발자는 프론트엔드와 백엔드를 구분하는 것보다 사용자에게 가치를 제공하는 데 중점을 둡니다. 저 또한 애플리케이션 개발자로서 도구와 프레임워크를 선택할 때 고려하는 주요 요소는 얼마나 쉽게 애플리케이션을 배포할 수 있는가입니다. 반복적이고 기계적인 작업을 자동화하는 데 중점을 두고, Remult라는 백엔드-프론트엔드 통합 프레임워크를 개발하게 되었습니다.  Remult의 배경Remult의 개발은 2006년으로 거슬러 올라갑니다. 당시, 저와 동료 개발자들은 C#.NET으로 마이그레이션하는 작업을 자동화하면서, 개발 생산성을 향상시키는 도구를 만들었습니다. 이 C# 라이브러리는 오늘날까지도 사용되며, 코드의 유연성을 제공하면서도 높은 생산성을 유지할 수 있게 합니다.Node.js의 등장은 프론..

Memphis와 Apache Spark를 활용한 상태 기반 스트림 처리

오늘은 AWS S3에서 대규모 데이터를 처리하고 풍부하게 만드는 방법을 학습하기 위해 Apache Spark와 Memphis를 활용하는 방법에 대해 알아보겠습니다. 이 튜토리얼에서는 AWS S3와 Apache Spark를 활용하여 대규모 데이터를 효율적으로 처리하는 방법과 이를 통해 얻을 수 있는 이점에 대해 자세히 설명하겠습니다.  AWS S3와 Apache Spark의 소개Amazon S3Amazon Simple Storage Service(S3)는 Amazon Web Services(AWS)에서 제공하는 매우 확장 가능하고, 내구성이 뛰어나며, 안전한 객체 저장 서비스입니다. S3는 기업이 웹 어디서나 데이터의 양에 관계없이 저장하고 검색할 수 있도록 지원합니다. S3는 다른 AWS 서비스 및 타사..

마이크로 프론트엔드 아키텍처: 더 관리 가능하고 확장 가능한 프론트엔드 애플리케이션 구축

최근 몇 년 동안 소프트웨어 개발에서 마이크로서비스 개념이 큰 인기를 얻었습니다. 이제 빠르게 주목받고 있는 새로운 기술이 등장했습니다. 바로 마이크로 프론트엔드입니다. 마이크로 프론트엔드는 작은 재사용 가능한 컴포넌트를 만들어 배포하여 더 큰 애플리케이션을 구축할 수 있게 해주는 기술입니다. 이 글에서는 Vue.js를 사용하여 마이크로 프론트엔드를 구축하고, 일반 애플리케이션 개발과 마이크로 프론트엔드 접근 방식의 차이를 논의하겠습니다.  마이크로 프론트엔드란?먼저 마이크로 프론트엔드가 무엇인지 정의해보겠습니다. 마이크로 프론트엔드는 프론트엔드 애플리케이션을 더 작고 관리 가능한 부분으로 나누는 아키텍처 접근 방식입니다. 각 부분, 즉 마이크로 프론트엔드는 다른 부분과 독립적으로 개발 및 배포됩니다. ..

MLOps: 과대적합된 접근인 이유

최근 벤처 캐피털(VC) 조사에 따르면, 오늘날 수백 개의 회사가 자신들을 MLOps 카테고리의 일원으로 정의하고 있습니다. MLOps 시스템은 ML 실무자들이 개발부터 생산까지의 작업 생애 주기를 견고하고 재현 가능하게 관리할 수 있는 인프라를 제공합니다. 이러한 도구들은 E2E(End-to-End) 요구 사항을 다루거나 프로세스의 특정 단계 또는 아티팩트에 중점을 둡니다.데이터의 세계는 임시 SQL 문을 주로 사용하는 분석가부터 고유한 알고리즘을 실행하는 박사 학위 소지자에 이르기까지 다양한 데이터 실무자로 구성되어 있습니다. 그렇다면 모든 것을 통제할 수 있는 하나의 DevOps 접근 방식이 있을까요? 아니면 ML은 고유한 접근 방식과 일치하는 인프라가 필요한 독특한 실무일까요? 이 질문에 답하기 ..

병행성과 병렬성의 이해: Temporal을 이용한 분산 시스템 구현

컴퓨팅이 시작될 때는 단일 일련의 연산으로 모든 것을 이해하는 것이 상대적으로 쉬웠습니다. 그러나 시간이 지남에 따라 동시에 여러 작업을 수행할 수 있는 능력을 도입했습니다. 오늘날 컴퓨터가 멀티태스킹을 수행할 수 있다는 사실을 당연하게 여깁니다. 멀티 코어, CPU, 서버 덕분에 이 모든 것이 가능하다는 것을 알고 있습니다. 그렇다면 자바스크립트나 파이썬과 같은 "단일 스레드" 언어가 어떻게 "동시에 여러 일을 하는 것처럼 보이게" 할 수 있을까요?여기에는 병행성과 병렬성이라는 두 가지 다른 개념이 있습니다. 이 둘은 종종 혼동되지만, 완전히 구별되는 개념입니다. 간단히 정의하자면:병렬성(Parallelism): 실제로 동시에 여러 작업이 실행되는 것.병행성(Concurrency): 여러 작업을 정의되..

엣지 컴퓨팅에서 AI 활용: 실시간 향상을 위한 알고리즘 구현

엣지 컴퓨팅은 IoT(사물인터넷) 기기, 센서, 네트워크 스위치 등 데이터 소스 근처에서 컴퓨팅을 수행하는 혁신적인 접근 방식입니다. 이 로컬 처리 패러다임은 다양한 분야에서 주목받고 있으며, 인공지능(AI)과의 통합으로 실시간 의사결정을 혁신적으로 변화시키고 있습니다. 이번 글에서는 AI와 엣지 컴퓨팅이 어떻게 융합되어 IoT 기기의 실시간 처리 및 의사결정을 가능하게 하는지 살펴보겠습니다.    엣지 컴퓨팅에서 AI의 부상전통적인 중앙 집중형 클라우드 서버에서 데이터를 처리하는 모델은 IoT 기기가 생성하는 방대한 데이터량 때문에 도전받고 있습니다. 데이터를 중앙으로 전송하여 처리하는 것은 지연 시간을 증가시키고 대역폭 사용 및 보안 문제를 초래합니다. 엣지 컴퓨팅에서 AI의 도입은 이러한 문제를 해..

스노우플레이크 vs 데이터브릭스: 클라우드 데이터 플랫폼 선택 가이드

클라우드 데이터 플랫폼 선택 가이드: 스노우플레이크 vs 데이터브릭스데이터 관리와 분석은 현대 비즈니스의 핵심 요소로 자리 잡고 있습니다. 다양한 기업과 조직은 빅데이터 시대에 효율적인 데이터 수집, 분석, 활용을 위한 클라우드 데이터 플랫폼을 찾고 있습니다. 그 중에서도 스노우플레이크와 데이터브릭스는 업계의 주요 경쟁자로 손꼽힙니다. 두 플랫폼은 각각 고유한 장점과 특징을 지니고 있으며, 비즈니스 환경에 맞는 플랫폼을 선택하는 것이 중요합니다. 이 글에서는 두 데이터 플랫폼의 특징, 장점, 차이점을 비교하여, 비즈니스에 가장 적합한 플랫폼을 선택할 수 있도록 안내해드립니다.    스노우플레이크와 데이터브릭스의 차이점 및 특징 비교아키텍처: 스노우플레이크는 SQL 기반의 서버리스 시스템으로, 컴퓨팅과 스..

OpenShift를 활용한 Quarkus/Camel 마이크로서비스 배포 가이드

이번 글에서는 Quarkus와 Apache Camel을 활용한 마이크로서비스를 OpenShift 환경에서 효과적으로 배포하는 방법을 소개해 드리고자 합니다. 이전에 Minikube에서 배포하는 방법을 살펴보셨다면, 이번에는 OpenShift라는 엔터프라이즈 급 플랫폼에서 어떻게 마이크로서비스를 운영할 수 있는지 알아볼 텐데요. 이 글을 통해 OpenShift의 특징과 함께, 이를 활용한 배포 과정을 단계별로 안내해 드리겠습니다.OpenShift는 Kubernetes 기반의 애플리케이션 개발, 배포, 관리 플랫폼으로, 레드햇에서 제공하는 강력한 솔루션입니다. 이 글에서는 무료로 제공되는 OpenShift Developer's Sandbox를 활용해 Quarkus/Camel 마이크로서비스를 배포하고 관리하는..

대화형 애플리케이션의 비밀: 사용자 입력에서 대답까지의 여정

우리 일상의 중요한 부분으로 자리 잡은 대화형 애플리케이션들, 가상 비서부터 챗봇, 음성 기반 인터페이스에 이르기까지, 이러한 시스템들과의 상호작용이 어떻게 이루어지는지 궁금해 하신 적이 있나요? 이 글에서는 사용자가 이러한 시스템과 상호작용할 때 무슨 일이 발생하는지, 사용자 입력이 어떻게 처리되어 대형 언어 모델(LLM)에 전달되는 명령어로 변환되고, 응답이 생성되어 사용자에게 다시 제시되는지에 대한 기술적인 측면을 탐구할 것입니다. 이 과정을 간소화하여 기술적인 배경이 없는 독자들도 이해할 수 있도록 설명할 것입니다. 일상에서 우리는 다양한 형태로 대화형 애플리케이션과 상호작용합니다. 목소리로 "오늘 날씨가 어때?"라고 물을 수도 있고, 텍스트 메시지를 보내거나 버튼을 클릭할 수도 있습니다. 이러한..

데이터 웨어하우스: 정보 스토리지

데이터 웨어하우스는 이제 기존의 IT 인프라를 벗어나 운영되고 있습니다. 업계는 끊임없이 발전하고 있으며, 완벽한 솔루션은 없습니다. 날로 진화하는 데이터 관리 환경에서 데이터 웨어하우스와 데이터 레이크 간의 해묵은 경쟁 관계는 마침내 해소되고 있습니다. 이제 더 이상 둘 중 하나를 선택하는 문제가 아니라, 기업과 IT에 막대한 이익을 가져다주는 현대적이고 통합된 구성 요소로서 데이터 웨어하우징을 활용하는 것입니다. 이 블로그는 데이터 웨어하우징에 대해 깊이 연구하고, 데이터 웨어하우징이 정보 스토리지의 영원한 타이탄으로서 어떻게 성장하고 있는지를 조명합니다. 먼저 데이터가 현대 비즈니스의 원동력이 된 과정을 살펴보고, 데이터 웨어하우스와 데이터 레이크라는 용어의 의의와 사용법을 이해하는 것이 탐구의 토..

Agile-DevOps 가치 : DevOps 전환 목적 실현

현대 제품 개발에서 가치 흐름을 이해하는 것은 우리의 작업 방식을 최적화하고 고객에게 가치를 제공하는 데 매우 중요합니다. 가치 흐름은 토요타와 린 제조 운동을 시작으로 수십 년 동안 린 사고의 중심 원칙이었으며, 현재 산업 전반에 걸쳐 널리 채택되고 있습니다. 그럼에도 불구하고 많은 기업은 여전히 가치 흐름의 잠재력을 최대한 활용하여 조직 변화를 주도하고 효율성과 효율성을 높여야 합니다. 대신 팀 속도나 프로덕션 파이프라인 속도와 같은 측정 기준에 좁게 초점을 맞출 수 있으며, 엔드 투 엔드 시스템에 대한 전반적인 그림을 놓칠 수 있습니다. 현대 제품 개발에서 가치 흐름을 이해하는 것은 우리의 작업 방식을 최적화하고 고객에게 가치를 제공하는 데 매우 중요합니다. 가치 창출 경로를 매핑함으로써 프로세스에..

마이크로서비스 : 서비스 간 연계 구현 : 방법, 개념, 개요

쇼피몽 서비스 업무 흐름 마이크로서비스들 간의 동기 및 비동기 연동 기능을 구현해서 고객이 상품을 구매하는 쇼핑몰 시스템의 주요 프로세스를 구현하고 테스트해 보았습니다. 이 쇼핑몰 시스템의 여러 업무 중 상품 구매를 위한 프로세스를 구현합니다. 이 프로세스를 좀 더 자세히 설명하면, 구매자가 상품구매를 위해 구매할 상품과 수량을 입력하면 Account 서비스로 구매자에 해당하는 주소정보를 조회해서 가져옵니다. Product 서비스로 구매하려는 상품의 가격정보를 조회해서 가져옵니다. 구매자가 가져온 주소와 상품의 가격을 확인하고 최종 구매를 결정하면, 이 정보가 배송 서비스로 전달됩니다. 이 상품 구매 프로세스를 동작하게 하기 위한 각 서비스간의 동기 및 비동기 방식의 연동 기능을 구현하고 테스트합니다. ..

마이크로서비스 : Spring Boot : 도메인 모델 구현 방법 : 개요, 개념, 정의

업무기능 추가 Account에 간단하게 아이디와 이름, 주소와 이메일 주소만을 갖는 간단한 객체로 설계하고 구현을 해보았습니다. 모델이 코드로 어떻게 구현되는지 또 어떻게 테스트해 볼 수 있는지 이해할 수 있었습니다. 그래서 이번에는 Account Domain Model 전체로 확장해서 구현하고 테스트를 해보았습니다. 초기 하나의 문자열 정보로 관리했던 주소는 주소와 우편번호로 구체화하여 별도 객체로 분리하였습니다. 또한 쇼핑몰 서비스를 사용하는 회원은 판매자, 구매자로 회원 유형을 분리하였고, 또한 판매나 구매 실적에 따라 등급이 부여될 수 있어야 하므로 별도 MembershipLevel을 추가합니다. 따라서 초기의 간단했던 Account는 화면과 같이 Account, Address, Membertyp..

마이크로서비스 : Spring Boot, Swagger, Maria, H2 : API 테스트 및 데이터베이스 변경

Swagger를 활용한 API 명세 & 테스트 Swagger는 간단한 설정으로 프로젝트에서 지정한 URL들을 HTML화면으로 확인할 수 있게 해주는 오픈소스 프로젝트입니다. 특히 REST API를 만드는 경우 주소나 파라미터가 변경되더라도 그 변경된 소스를 그대로 참조 문서로 만들어줍니다. 따라서 API가 수정되더라도 이 API를 이용하는 개발자는 문서를 참조하고 또 쉽게 테스트를 할 수 있습니다. 따라서 Swagger를 통해 API를 테스트하기 위해 pom.xml 파일에 화면과 같이 추가합니다. Config 패키지에 SwaggerConfig 클래스 스프링 부트 프로젝트에 추가하였습니다. 마지막으로 Application의 Swagger 어노테이션을 추가합니다. 소스코드가 변경되었으니 프로젝트를 다시 Bu..

마이크로서비스 : Spring Boot 프로젝트 생성 : 방법, 구현, 예제

Spring Boot Project 생성 실제 소스코드를 구현하기 위해 Spring Boot 프로젝트를 생성하고 Maven에 의존성, 즉 Dependency를 추가합니다. 이렇게 프로젝트를 만들고 개발을 위한 설정이 끝나면 구현을 위한 소스코드 패키지의 구조를 정의하고, 이후 하나씩 구현을 진행합니다. Spring Boot 프로젝트는 New - Starter Project를 선택하면 New Spring Starter Project 화면이 출력되는데, 이 화면의 Name, Location, Group, Artifact를 화면과 같이 입력합니다. 그리고 Next 버튼을 누르면 프로젝트의 Dependency를 추가하는 화면으로 전환되는데, Spring Boot Version을 선택합니다. 프로젝트에서 사용할 ..

마이크로서비스 : 구현하기 위한 개발환경 구축 방법 : 오픈소스 종류, 활용

개발환경 구축 마이크로서비스를 구현하기 위해 오픈소스를 활용한 개발환경을 구축해보도록 하겠습니다. 개발환경은 JDK, STS, Lombok, Maven의 순서로 설치를 합니다. 본 강의의 실습을 위해 JDK와 STS를 설치합니다. 그리고 자바에서 도메인 객체를 만들 때 프로퍼티에 대한 Getter, Setter 그리고 ToString, 생성자들을 객체마다 반복적으로 만들어야 합니다. 이런 반복적인 코드들을 어노테이션 선언만으로 자동 생성해 주는 라이브러리인 Lombok도 설치합니다. 그리고 Build 도구는 Maven을 사용합니다. JDK 설치 JDK는 오라클 사이트의 다운로드 메뉴에서 자신의 운영체제와 맞는 버전을 다운로드 받아서 설치합니다. 실습에 사용하는 컴퓨터는 64비트 운영체제로, 64비트용 J..

마이크로서비스 : 쇼피몽 서비스 모델링 방법 : 개념, 정의, 개요

쇼핑몰 서비스 업무 흐름 쇼핑몰 서비스의 업무 흐름은 가장 기본적인 구매자의 제품 구매 사례 관점에 대해 알아보겠습니다. 구매자는 구매하고자 하는 상품과 구매 수량을 입력해서 상품을 주문하고, 주문한 상품의 배송상태를 확인합니다. 식별한 마이크로서비스들 간의 업무 흐름으로, 먼저 구매자는 상품 구매를 하기 위해서 화면을 통해 구매하려는 상품과 구매 수량을 입력합니다. 구매 정보가 입력되면 Account 서비스로 구매자 이름으로 입력된 사람이 회원인지 아닌지 확인합니다. Account 서비스에 구매한 상품의 배송을 위한 주소를 가져와 상품을 배송 받을 주소로 설정합니다. 그리고 구매하기 위해 입력한 상품 이름으로 Product 서비스에서 해당 상품의 가격이 얼마인지 요청해서 전달 받은 후 입력한 구매수량에..

마이크로 서비스 : 애그리게잇 식별 방법 : 개념, 정의, 개요

애그리게잇 도메인 객체의 관리는 객체의 생명주기 동안 무결성을 유지하고 생명주기 관리를 위해 객체의 관계가 복잡해지는 것을 최소화하는 것이 중요합니다. 따라서 업무상 관련 있는 객체들을 묶어 경계를 명확히 정의해서 객체 간 관계가 복잡해지지 않도록 생명주기 전 단계에서 도메인 객체의 무결성을 유지할 수 있게 해주는 Aggregate을 정의해야 합니다. Aggregate은 업무상 관련 있는 객체들을 모아 경계를 명확히 정의하여 객체 간 관계를 복잡하지 않게 합니다. 생명주기 상의 전 단계에서 도메인 객체의 무결성을 유지할 수 있게 해주는 패턴입니다. 한마디로 표현하면, 데이터 변경의 단위로 다루는 연관된 객체의 묶음입니다. Aggregate은 1개 이상의 Entity로 구성됩니다. 그 중 한 Entity는..

반응형