분류 전체보기 101

Spring Boot, MySQL, JPA 그리고 docker-compose 예제 ... 1/2

이 포스팅은 2019년 10월 네이버 블로그에 포스팅 했던 글을 리 포스팅 한 글입니다. 이번 포스팅은 WAS(Spring Boot)와 DB(MySQL)를 하나의 Dockerfile로 묶어서(이를 docker-compose라 한다) 서비스하는 예제이다. Spring Boot에서 MySQL 사용은 JPA를 이용할 예정이다. 이번 포스팅에 사용되는 관련 기술은 다음과 같다. Spring Boot 2.1.9 , Java 8, IntelliJ, gradle, git, JPA, Swagger Spring Initializr를 이용한 Spring Boot 템플릿 생성 http://start.spring.io를 방문해 Spring Boot 템플릿을 아래와 같이 선택 후 zip 파일을 다운로드 받도록 한다. Proje..

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..

IntelliJ단축키 for mac

단축키 찾기, 검색 관련된 단축키 찾기: ⇧⇧ 전체에서 검색: ⌘ + ⇧ + f 클래스 내에서 검색: ⌘ + f 특정 메소드(symbol)찾기: ⌘ + ⌥ + o 최근 열었던 클래스 및 파일 찾기: ⌘ + e 메소드, 변수 사용된 곳 찾기: ⌥ + F7 프로젝트내 터미널 열기: ⌥ + F12 변경 클래스명, 함수명 이름 변경 (전체 적용됨): ⇧ + F6 검색 및 변경: ⌘ + r / ⌘ + ⇧ + r 탐색 메소드 구현체로 이동: ⌘ + b 탭의 왼쪽으로 이동 : ⌘ + ⇧ + [ 탭의 오른쪽으로 이동 : ⌘ + ⇧ + ] 히스토리 이전으로 이동 : ⌘+ [ 히스토리 이전으로 이동 : ⌘+ ] 화면 수직 분할: ⌃ + [ 화면 수평 분할: ^ + ] 왼쪽 패키지창으로 이동: ⌘ + 1 코딩 소스코드 자동..

Etc 2021.08.31

Spring Boot를 이용한 Kafka Pub Sub 개발

Kafka Pub Sub 모델 링크드인(Linkedin)은 초창기 Point to Point 구조를 이용해 시스템간 데이터 전송을 사용하다가 증가하는 메시지 전송에 대해 대응을 하지 못했다. Linkedin은 이 문제를 해결하기 위해 메시지 전송을 전용 시스템을 중앙에 두고 운영하는 Hub and Spoke 방식의 메시지 전송 시스템을 구성하였다. 그리고 그들이 만든 이 메시지 전송 시스템이 우리가 아는 Kafka이다. Kafka를 이용한 Hub and Spoke 시스템을 Pub(Publish) Sub(Subscribe) Model이라 지칭하고 이를 그림으로 설명 표현하면 다음과 같다. Producer(Publish) Publish 역할을 하는 서비스는 카프카에게 전송만하게 되고 수신자가 누구인지 알 필..

JVM 옵션을 통한 성능 튜닝 이해

JVM의 옵션 튜닝은 JVM으로 기동 되는 미들웨어나 애플리케이션의 성능에 영향을 끼칠 수밖에 없다. 따라서 JVM 옵션의 튜닝 포인트를 명확히 이해하고 적용하는 것이 애플리케이션이나 미들웨어의 성능을 최적화하는 최선의 방법이다. 이번 포스팅에서는 JVM 옵션 적용을 통한 성능의 튜닝 포인트에 대해 다루워 보려고 한다. 일반적인 성능 튜닝의 정의 성능 튜팅에 앞서 '성능'을 어떤 관점에서 바라볼 것인가에 대한 기준이 필요하다. 일반 적으로 성능은 TPS와 응답 시간으로 구분될 수 있는데 JVM을 튜닝하기 전 TPS에 초점을 둘 것인지 응답 시간에 초점을 둘 것인지 정한 뒤 성능 튜닝에 초점을 맞추는 것이 필요하다. TPS(Transaction Per Seconds) 응답시간(Response Time) 1..

Middleware/Tuning 2021.08.13

Spring Boot에서 Apache Kafka 사용 ... 2/2

이번 포스팅은 이전에 게시했던 "Apache Kafka란" 주제의 게시물에 이은 간단한 샘플을 작성해 보는 내용입니다. 마이크로서비스 아키텍처에서 메시지 전달을 위해 많이 사용하는 Pub/Sub구조의 프로그램을 간단히 설명하는 예제입니다. Pub/Sub 구조는 마이크로서비스 아키텍처를 이용한 응용 프로그램 개발시 비동기 방식의 메시지 전달을 위해 가장 많이 사용되는 방식으로 그 개념을 이해할 필요가 있습니다. Pub/Sub 구조 Kafka, RabbitMQ를 비롯한 Message Broker를 이용해 메시지를 전달하는 방법 중의 하나입니다. 메시지를 생성하는 Publisher와 그 메시지를 전달하는 Message Broker(Queue) 그리고 메시지를 소비하는 Consumer로 구성되어 있습니다. pu..

Spring Boot에서 Apache Kafka 사용 ... 1/2

아파치 카프카(Apache Kafka)는 분산 스트리밍 플랫폼이며 데이터 파이프 라인을 만들 때 주로 사용되는 오픈소스 솔루션입니다. 이러한 카프카는 대용량의 실시간 로그처리에 특화되어 있는 솔루션이며 데이터를 유실 없이 안전하게 전달하는 것이 주목적인 메세지 시스템에서 Fault-Tolerant한 안정적인 아키텍처와 빠른 퍼포먼스로 데이터를 처리하는 용도로 사용되고 있습니다. 최근 MSA에서는 Pub/Sub 구조를 통한 데이터 동기화 솔루션으로 RabbitMQ와 함께 많이 사용되고 있습니다. Apache Kafka의 특징 1. Pub/Sub 모델 : Publishe/Subscriber 모델은 데이터 큐를 중간에 두고 서로 간 독립적으로 데이터를 생산하고 소비하는 모델. 이런 느슨한 결합을 통해 Publ..

반응형