Application Modernization 51

Spring Boot로 만든 Hello Minikube 예제

이번 포스팅에서는 spring boot 기반의 hello 애플리케이션을 지난번 포스팅에서 설치했었던 minikube(미니큐브) 시스템에 배포하고 호출하는 예제를 실행해 보고자 한다. (*PC에 minikube가 이미 설치되어있다면 이전 포스팅을 참조하지 않아도 된다.) 예제에 사용될 앱은 http://[ip:port]/hello/[이름]의 형식으로 호출되며 이름을 넘기면 리턴해주는 심플한 앱이다. 예제에 사용된 환경 JDK 11 Spring Boot 2.6.0 gradle git Docker for mac(windows라도 상관없다) 및 Docker hub 계정 Minikube Hello Minikube2 앱 작성 https://start.spring.io/에 방문해 아래와 같은 옵션으로 앱을 만들어 다..

Minikube(미니큐브)

이 포스팅은 2020년 네이버 블로그에 게시 했던 글을 리 포스팅한 글입니다. Minikube(미니큐브)란? 쿠버네티스는 마스터 노드(Master Node)와 하나 이상의 워커 노드(Worker Node)로 구성되어 있습니다. 그러나 단순 개발 테스트를 위해 개인이 이 정도의 플랫폼(Platform)을 구성하는 것은 쉽지 않습니다. Minikube(미니큐브)는 마스터 노드의 일부 기능과 개발 및 배포를 위한 단일 워커 노드를 제공해 간단한 쿠버네티스 플랫폼 환경 개인 PC에서 만들어 볼 수 있게 만들어 줍니다.(이런 개인용 Kubernetes 개발 테스트 환경으론 Kind라는 제품도 있습니다.) Minikube에 대한 원본 기사는 아래의 링크를 통해 확인 가능합니다. Minikube를 사용해서 클러스터 ..

Kubernetes (쿠버네티스) 란?

본 포스팅 자료는 2019년 네이버 블로그에 포스팅 했던 내용을 리 포스팅한 글입니다. 개인적으로 2019년 한해 가장 뜨거웠던 IT 키워드는 쿠버네티스(Kubernetes: 첫 자인 K와 마지막 자인 S사이에 8개의 단어가 있다고 해서 K8S로 줄여 부른다) 였던 걸로 생각됩니다. 쿠버네티스는 다수의 컨테이너들을 관리해 주는 오케스트레이션(Orchestration) 플랫폼입니다. 즉, 도커(Docker)와 같은 컨테이너들이 한 두대의 서버에 몇 개로만 구성되어 운영될 때는 필요 없는 개념이지만 컨테이너들이 엔터프라이즈(Enterprise)급의 구성을 통해 수십, 수백개로 늘어나게 되면 그 관리를 위해 꼭 필요한 플랫폼입니다. 쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확..

Docker Image Repository

이번 포스팅에서는 Public 망에 있는 Docker-Hub(https://hub.docker.com/) 에 개인용 컨테이너(Container) 이미지(Image) 레지스트리 (Registry)를 만들어 보도록 하겠습니다. 이번 포스팅은 다음의 지식이나 환경이 필요합니다. - Windows, Linux 혹은 Mac 환경에 설치된 Docker Engine - Docker에 대한 기본 개념 - Docker 기본 명령어 Hands on은 다음과 같은 순서로 진행 가능합니다. 1. hub.docker.com에 계정 생성(혹은 로그인) - 웹 브라우저를 통해 http://hub.docker.com 에 접속 - sign in 메뉴를 찾아 클릭 - 계정 생성(Google ID 등과 연동 가능) - 로그인 2. Reg..

Docker Private Container Registry 만들기

이 포스팅은 2020년 네이버 블로그에 올렸던 내용을 리 포스팅했습니다. 지금까지의 포스팅에서 도커(docker) 이미지(혹은 컨테이너 이미지)는 도커 허브(https://hub.docker.com/)로부터 공개된 이미지를 끌어와(pull) 만들었습니다. 이렇게 컨테이너 이미지를 등록, 보관 관리하는 곳을 container registry라고 하는데 Network의 Public 망이 엄격히 금지되는 곳에서는 네트워크 망 내에 별도의 registry를 만들어야 될 필요가 있습니다.(maven repository를 위해 nexus repository를 별도로 구축하는 것과 같습니다.) 이번 포스팅에서는 docker registry 이미지를 이용해 Private Container Registry 만드는 것을 ..

Git, gradle, Spring Boot 개발 환경 구성 ... 2/2

SPring Boot 프로젝트 구성 및 Git 레파지토리 구성은 아래의 링크를 참조할 것 Git, gradle, Spring Boot 개발 환경 구성 ... 1/2 이 글은 2019년 네이버 블로그에 포스팅 했던 내용을 리 포스팅 했습니다. 개요 최근 IT Infra 환경이 Cloud 환경으로 점차 변화되면서 응용 프로그램 역시 Cloud에 최적화된 아키텍처를 요구하고 있다 sharplee7.tistory.com Git Tag 추가 지난번 포스팅에서 온라인 https://start.spring.io/ 를 이용해 SpringInitializr 라는 Spring Boot Web 어플리케이션을 gradle 기반으로 생성해 이를 로컬 PC에 다운로드 받았었다. 여기에 git init 명령어를 통해 로컬 PC의 ..

Git, gradle, Spring Boot 개발 환경 구성 ... 1/2

이 글은 2019년 네이버 블로그에 포스팅 했던 내용을 리 포스팅 했습니다. 개요 최근 IT Infra 환경이 Cloud 환경으로 점차 변화되면서 응용 프로그램 역시 Cloud에 최적화된 아키텍처를 요구하고 있다. 이렇게 기존 Infra 환경에서 개발된 응용프로그램들을 Cloud에 최적화된 응용프로그램으로 Refactoring/Rebuilding 하는 것을 요즘 Application Modernization이라 하고 있다. 이 포스팅에서는 Application Modernization의 중심에 있는 Spring Boot, Git 그리고 최신의 IDE(Integration Development Tool) 기반 개발 환경을 이해하고 구성하는 것을 알아 보도록 하겠다. 개발환경 Spring Boot Gradl..

자주쓰는 Dockerfile 명령어

이 글은 2018년에 네이버 블로그에 포스팅했었던 글을 리포스팅한 글입니다. dockerfile을 만드는데 자주 쓰는 키워드를 알아보도록 합니다. FROM [base 이미지][:버전] FROM ubuntu:16.08 FROM은 docker image를 생성할 base 이미지를 지정합니다. 버전명을 지정하지 않으면 가장 최신 이미지를 이용해 이미지를 생성합니다. RUN [“실행할 명령어”,”파라미터1”,”파라미터2…] RUN [“apt-get”,”install”,”-y”,”tomcat8”] FROM으로 생성된 이미지내에서 실행할 명령어를 입력합니다. [“명령어”,”파라미터”,…]등으로 실행 할 수 있지만 ‘[‘없이 바로 명령어를 입력해도 됩니다. RUN apt-get install –y tomcat8 RU..

Dockerfile 로 docker image 작성

이 글은 2018년에 네이버 블로그에 포스팅했었던 글을 리포스팅한 글입니다. 현재 실행중인 컨테이너 이미지를 통해 Docker Image를 만드는 명령어로 commit이 있습니다. 하지만 개발 환경에 따라 동적으로 도커 이미지를 만들고자 할 때 commit을 통해 이미 사용 중인 이미지를 배포하는 방식보단 Dockerfile은 이용해 동적 이미지 생성이 효율적일 수 있습니다. Dockerfile은 eclipse, gradle과 함께 개발자 배포 환경에 자주 사용됩니다. 여기서는 이러한 Dockerfile에 대해 간략히 알아보도록 하겠습니다. 다음의 Dockerfile 파일 샘플을 확인해 보도록 합니다.(파일명 Dockerfile) FROM bridg/java8 ENV http_proxy 'http://p..

Docker로 Tomcat MySQL 실행

이 글은 네이버 블로그에 2018년 포스팅 했던 글을 리포스팅한 글입니다. 이번 포스트에서는 지난번에 설치한 Tomcat 컨테이너에 이어 MySQL 컨테이너를 추가해 Tomcat컨테이너와 MySQL컨테이너 사이의 연동을 테스트해 보도록 하겠습니다. 지난 포스팅인 ‘Docker for windows를 통한 Tomcat 실행’를 테스트를 하지 않은 분은 반드시 이전 실습을 완료 후 이번 포스팅을 보시기 바랍니다. MySQL 연동을 위한 MySQL설치 docker search mysql (docker hub로부터 mysql image search) C:\Users\FKL>docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a..

Docker로 Tomcat 실행

이 글은 2018년 네이버에 포스팅했던 글을 Tistory로 리포스팅한 글입니다. docker에 대한 간단한 개념과 명령어를 알아 보았다면 이번에는 미리 만들어진 Tomcat8 도커 이미지를 이용해 간단한 웹 초기 화면을 웹 브라우저에서 호출해 보도록 하겠습니다. 이번 실습에 사용될 웹어플리케이션의 컨텍스트 이름은 ROOT이며 디렉토리 및 파일의 구조는 다음과 같습니다. C:\webapps\ROOT │ index.jsp │ └─WEB-INF web.xml 실습에 사용될 어플리케이션은 아래의 링크에서 배포 파일 형태로 다운로드 받으실 수 있습니다. 배포 파일의 이름은 ROOT.war 파일 입니다. http://sharplee7.blog.me/221464833661 또한 미리 만들어진 Tomcat8의 이미지..

Docker 개념

이 포스팅은 필자 소유의 네이버 블로그에 작성된 2019년도의 글을 리포스팅한 글입니다. Docker는 LXC(리눅스 컨테이너)라는 커널 컨테이너 기술을 이용해 만든 컨테이너 기술 중의 하나입니다. 물론 Docker를 LXC와 동일선상에서 비교하는 것은 무리가 있으며 최근에는 VM(Virtual Machine) 보다 경량화된 서버 구동 체제로 각광을 받고 있습니다. 특히 클라우드 환경의 확산과 더불어 그 활용도가 더 증가되고 있습니다. Docker의 특징 컨테이너는 이미 오래된 기술이다.(리눅스의 LXC, Solaris Zones, BSD Jails등) 그럼 이 오래된 기술 대비 Docker 컨테이너의 장점은? 손쉬운 사용을 위한 툴 재사용 가능한 컴포넌트 현존하는 대부분의 Linux 서버에서 구동: 물..

istio와 envoy 란

이 글은 2020년에 제 소유의 네이버 블로그에 있던 글을 리호스팅한 글입니다. 개요 Microservice 아키텍처를 구성하는 각각의 Microservice들은 Microservice들 간 통신을 위해 각 서비스를 식별(Discovery)하고, 경로를 파악(Routing)하며, 로드 발란싱(Load Balancing)을 하고 전체 서비스의 장애 전파를 차단(Circuit Break)하는 역할이 한데, 이러한 기능을 통합해 하나의 계층으로 만든 것이 Service Mesh이다. Service Mesh는 그 구성방식에 따라 3가지 종류가 있다. (이전 포스팅의 Service Mesh 부분 참조) Microservice Architecture 컴포넌트 Microservice Architecture를 구성하는..

Microservice Architecture 컴포넌트

Microservice Architecture를 구성하는데 필요한 각각의 필요 요소들에 대해 이를 그룹화 하고 잘 정리한 자료를 찾는 것은 쉽지 않다. 사실 이 분야 전문가는 Gartner라고 생각하고 있고 그 분야의 전문가인 것 처럼 Gartner는 2018년 부터 Microservice Architecture에 대해 잘 정리하고 있다. Gartner는 Microservice Architecuture의 구성 요소로써 실제 서비스에 필요한 컴포넌트들을 다루는 Outer Architecture와 그 컴포넌트에 실릴 응용 프로그램을 설계하고 개발하는 Inner Architecture라는 대분류를 만들고 다음의 다이어그램으로 그 영역을 표시했다. Microservice Architecture Platform ..

OpenFeign 간단 예제

이 포스팅은 2020년 본인 소유의 네이버 블로그에 올린 글을 재 포스팅하는 글 입니다. OpenFeign Demo 이번 예제는 OpenFeign을 이용해 간단한 호출을 해보는 예제입니다. OpenFeign에 대한 개념이 필요하신 경우 아래를 참조합니다. OpenFeign 이란? 이 글은 2020년 본인 소유 네이버 블로그에 포스팅한 글을 가져와 재 포스팅한 내용입니다. 지금은 중국 알리바바로 옮겼지만 한때 Pivotal China에서 일했었고 나와는 5개월 정도 함께 일했었던 '리 sharplee7.tistory.com 예제에 사용될 프로젝트 구조는 아래와 같습니다. OpenFeign Demo 시나리오 8081로 기동되는 Caller서비스와 8082로 기동되는 Callee서비스가 있습니다. Caller..

OpenFeign 이란?

이 글은 2020년 본인 소유 네이버 블로그에 포스팅한 글을 가져와 재 포스팅한 내용입니다. 지금은 중국 알리바바로 옮겼지만 한때 Pivotal China에서 일했었고 나와는 5개월 정도 함께 일했었던 '리 강'이라는 중국인이 개발한 Spring Cloud의 RESTful 통신용 라이브러리입니다. OpenFeign은 Spring Cloud에서 RestTemplate과 Hystrix 라이브러리를 통합한 기능으로 생각할 수 있습니다. Hystrix가 RestTemplate과 함께쓰여 설정된 임계치에 조건이 다달아 장애가 발생하면 FallBack 메소드가 작동하게 하는 방식과 동일한 방식으로 동작 할 수 있습니다. 보통 OpenFeign은 Connection Timeout과 Read Timeout 조건에서 동..

Eureka : Service Discovery

이 글은 2019년에 작성된 필자 소유의 네이버 블로그에서 이동해 왔습니다. Spring Cloud의 Ribbon을 이용하면 MSA의 복수개의 동일 서비스간에 호출을 위한 로드벨런스를 SW로 구축 할 수 있습니다. 다만 각 서비스간의 호출 관계에 필요한 서버 목록들을 호출하는 서버의 application.yml에 listOfServers라는 목록에 기록 했어야 했습니다. Euerka는 Ribbon에서 호출할 서버 목록을 일일이 타이핑해서 관리해야 하는 단점을 보완해 호출되는 서비스들이 Eureka 서버에 자신의 서비스를 자동으로 등록해 별도의 서비스 등록을 해야 하는 수고를 덜어주는 서버입니다.(이러한 기능을 MSA에서는 Service Registry라 부릅니다.) Netlfex Eureka를 이용해 필..

Ribbon : Load Balancer

이 글은 2019년에 작성된 필자 소유의 네이버 블로그에서 가져왔습니다. MSA 환경에서 서비스와 서비스는 서로 종속적인 관계를 가질 수 밖에 없습니다. 대부분의 서비스들은 그 중요성에 따라 이중화 시스템으로 구축될 가능성이 높습니다. 이런 점을 고려해 볼 때 이중화 되는 서비스 별로 L4스위치와 같은 장비를 구매한다는 것은 비용적으로 부담스러울 수 밖에 없습니다. Netflex는 이런 점에 착안 Ribbon이라고 하는 SW적인 로드 발란서를 만들었으며 이를 통해 호출하는 서비스에서 호출되는 서비스들에 대한 소프트웨어 적인 Road Balancing이 가능하도록 했습니다. Ribbon은 - REST API를 호출하는 서비스에 탑제되는 SW 모듈 - 주어진 서버 목록에 대해 Load Balancing 수행..

Hystrix : Circuit Breaker

이 글은 2019년에 작성된 본인 소유의 네이버 블로그에서 이동해 왔습니다. Cloud Native Application 구축을 위해 최근 가장 각광 받고 있는 기술이 MSA(Micro Service Architecture)입니다. MSA의 핵심이 되는 기술들로는 회로차단, 로드밸런스, 서비스레지스트리, APIGateway등이며 이런 필요 기능등을 Open Source로 배포하는 가장 유명한 소프트웨어가 아마존 AWS 환경하에서 MSA를 성공적으로 구축해서 사용하고 있는 Netflex의 OSS(Open Source Software) 입니다. Netfliex OSS 라이브러리에는 여러 기능들이 있으나 이중 Hystrix, Eureka, Ribbon, Zuul등은 Pivotal社가 배포하는 Spring Cl..

REST API 설계 가이드

정의 및 특징 • REST(REpresentational State Transfer)란 ‘자원(Resource)을 의미(Representation)로 구분하여 그 상태를 전달’ 하는 것을 뜻함 • 즉, HTTP URI(Uniform Resource Identifier)를 통해 자원(Resource)을 명시하고, HTTP Method(POST, GET, PUT, DELETE)를 통해 해당 자원에 대한 CRUD Operation을 적용하는 것을 의미 • REST라는 단어는 Roy Fielding이 2000년 캘리포니아 대학교 어바인 캠퍼스의 박사논문으로 제출한 'Architectural Styles and the Design of Network-based Software Architectures'에서 처음으..

반응형