
STOMP 란 STOMP 는 Simple/Stream Text Oriented Messaging Protocol 약자이다. 말 그대로 간단한 문자 기반 메세징 프로토콜이다. 프로토콜이란 원거리에서 메세지를 서로 주고 받을때 정의된 양식 규칙 체계이다. 즉 STOMP는 텍스트 송 수신을 위한 미리 정의된 어떠한 규칙이다. STOMP 스펙에 정의한 규칙만 잘 지키면 여러 언어, 여러 플랫폼간 메세지를 상호 운영할 수 있다. Easy AMQP 나 MQTT 와 같은 메세지 전송을 위한 다른 프로토콜은 존재한다. 하지만 STOMP 가 그것들과 다른점은 binary 기반이 아닌 텍스트 기만 프로토콜이라는 점이다. 그렇기 때문에 개발자가 읽기 쉽고 사용하기에 좋다. 이런점은 마치 HTTP 와 유사한 점이다. 이런 부..

7~8 년쯤 반도체 부품 제조 업체 프로젝트를 했었다. 개발 중에 레거시 시스템과 보안에 민감한 데이터를 주고 받을 일이 있었다. 그래서 암호화가 필요했는데 당시 업체의 SM 전산실 현업쪽에서 암호화 처리를 위해 아래와 같은 샘플 코드를 받았다. byte[] bytes = Base64.encodeBase64(inputString.getBytes()); ...이하 생략 당시 라이브러리를 뭘 사용했는지 모르겠지만 Base64 인코딩 처리를 하는 코드였다. 그래서 "Base64 인코딩은 암호화 방법이 아니다." 라고 말했다가 오히려 성화를 입은 적이 있다. 요즘도 폐쇠적인 곳의 전산팀과 일을 하다 보면 암호나 기타 민감 정보를 주고 받을 때 Base64 인코딩을 암호화 방식이라면 사용하는 곳을 보게 된다. 이..

MSA (Microservice Architecture) 와 Cloud 를 이용한 서비스등 배포 편의성 등으로 Docker를 많이 사용합니다. Docker Container 내부에 이미 애플리케이션을 실행하기 위한 환경을 (OS 등) 갖추고 있기 때문에 Docker를 이용하면 애플리케이션을 빠르고 신속하게 서비스할 수 있습니다. 오늘은 간단한 예제를 통해 자바 애플리케이션을 Maven을 통해 Docker Image를 만들어 보겠습니다. Simple Project 생성 우선 메이븐을 이용해서 프로젝트 초기화를 하겠습니다. 메이븐이 설치되어 있지 않다면 [maven 설치]해당 링크로 가서 운영체제에 맞는 maven을 설치하면 됩니다. maven이 설치 됐다면 아래 명령어로 프로젝트를 생성합니다. mvn ar..

Jenkins 기본 설치로는 사용자별 기능이나, Item 관리를 할 수 없다. 하지만 Jenkins는 많은 플러그인으로 확장 기능을 지원하고 있는데 그 중 Role-based Authorization Strategy Plugin을 설치해서 Jenkins에서 권한 관리를 하는법을 알아보겠다. 플러그인 설치 젠키스 플러그인 설치 페이지로 이동한다. 필터창에 Role 입력해서 플러그인 검색 후 아래 이미지와 같이 체크후 플러그인을 설치한다. 정상 설치가 되었다. 안정적인 사용을 위해서 젠키스를 재시작한다. 플러그인 사용 플러그인 설치 후 사용을 위해서는 Authorization 방법을 변경해야 한다. Jenkins 관리 > Congifure Golobal Security 로 이동해서 아래 그림과 같이 Role..

국내에서는 웹 애플리케이션 개발할 때 Spring 을 많이 사용하고 그러다 보니 보안 처리는 주로 Spring Security를 많이 사용한다. 하지만 Spring Security를 사용하지 않고 보안 영역의 프로그램을 직접 짜지 않는다면 Apache Shrio는 좋은 대안이 될 수 있다. Apache Shiro는 java로 구성된 Security Framework 이다. Apache Zeppelin등에서 사용되고 있고 2010년 이전에 나와서 최근에는 2020-02-23 1.5.1 release 될만큼 잘 관리되고 있다. 오늘은 Apache Shiro 구체적인 사용법은 작성은 아니고 혹시라도 누군가 Apache Shiro를 Postgresql DB를 연동하고 싶을때 참고할 수 있는 Configurati..

OSGI(Open Service Gatewary Initiative) 는 java 애플리케이션간 동적으로 동작, 배포를 가능하게 하는 서비스 번들, 모듈화를 위한 specification이다.. 예를 들면 이클립스IDE 의 플러그인 설치를 통해 기능을 확장해 가는 것과 같다.(이클립스도 OSGI Framework 인 Eclipse Equinox을 이용한다.) OSGI specification 구현하는 Framework는 몇 가지 종류가 있는데 오늘은 그중 하나인 apache felix와 felix를 이용한 OSGI 플랫폼인 apache karaf를 이용해서 간단한 예제를 만들어 보겠다. Pom.xml bundle작업을 하기위해 felix maven plugin 과 osgi dependency 를 추가한다..
Maven에서 Java 애플리케이션을 runnable jar 파일로 만드는 방법은 아래와 같이 대략 3가지 방법이 있다. maven-jar-plugin : src/main/java, src/main/resources 만 포함한다. maven-assembling-plugin: depdendencies jar 를 파일들을 함께 모듈화 한다. maven-shade-plugin: depdendencies jar 를 파일을 함께 모듈화 하고 중복되는 클래스가 있을경우 relocate dependency 모듈들의 packing 과 패키지, 클래스명 중복시 유연한 대처를 위해서 shade 플러그인을 사용하는게 가장 좋다. 오늘은 아주 간단한 자바 애플리케이션으로 Runnable Jar 파일을 만들어보겠다. pom.x..
jEnv Mac 에서 여러개의 Java 버전을 관리하고 이용할 수 있는 툴이다. 아마도 jEnv 는 Java Enviorment에 약어일듯 싶다. 뭐 그게 중요한 건 아니고 오늘은 jEnv를 이용해서 여러 버전의 Java를 쉽게 사용하는 법을 알아보겠다. multiple java version /usr/libexec/java_home -V 명령어로 현재 설치된 java들을 확인할 수 있다. 현재 Mac에는 1.8, 11, 12가 설치 돼있다. ~ % /usr/libexec/java_home -V Matching Java Virtual Machines (3): 12, x86_64:"OpenJDK 12"/Library/Java/JavaVirtualMachines/openjdk-12.jdk/Contents/H..

Ubuntu에서 여러 version의 자바를 사용하는 법을 알아보겠다. 우선 터미널에서 "java -version" 를 입력해보자 $ java -version openjdk version "1.8.0_232" OpenJDK Runtime Environment (Zulu 8.42.0.23-CA-linux64) (build 1.8.0_232-b18) OpenJDK 64-Bit Server VM (Zulu 8.42.0.23-CA-linux64) (build 25.232-b18, mixed mode) Auzul System의 Zulu 1.8 버전이 설치돼 있다. 이렇게 경로없이 java가 실행 가능한 이유는 환경 변수에 PATH가 잡혀있고 해당 PATH 에 java 실행파일이 존재하기 때문이다. "which j..

Build 설정 jenkins의 구성 메뉴에 접근해서 Build로 이동한다. gradle을 이용해서 jar를 파일을 생성하겠다. Build 메뉴에서 Invoke Gradle script를 선택해서 아래와같이 입력한다. 프로젝트에 소스코드와 같이 위치해 있는 gradle을 사용하기 때문에 gradle을 별도로 설치하지 않는다. 애플리케이션의 중단 스크립트와, build jar 파일의 복사, 애플리케이션 기동 스크립트실행 shell을 아래와 같이 순서대로 추가한다. 3번째 shell 의 BUILD_ID=my-web 부분은 jenkins에서 실행 시키는 start.sh의 lifecycle 을 분리하기 위해서다. start.sh 스프링 boot background 로 실행시킨다. #!/bin/sh nohup j..
- Total
- Today
- Yesterday