mj@home:~$

  • Git repository auto deploy shell

    Why?? 회사에서 프로젝트를 개발하고 배포함에 있어서, 편하게 할수 있도록하는 배포용 shell 개발 또한 commit후 배포하지 않아도 새벽마다 재배포 할 수 있는 cron 작성 주로 java 기반의 maven 프로젝트를 위주로 개발하기 때문에 이를 위한 shell이다. maven 빌드 후의 결과로 떨어지는 deploy.sh을 실행하면 서비스 파일 위치, 서비스 등록 등의 배포 작업을 해준다....

  • Spring boot async method

    aync method 비동기 실행 회사 프로젝트중 비동기 실행을 처리해야하는 부분이 있어서 조사하던중. spring에서 지원하는 @aync 기능이 있는 것을 알고 조사하여 개발했다. 이전까지는 Threadable 클래스를 정의하고, thread들을 관리하는 monitoring thread를 같이 선언하여 했으나 결과에 상관없이 작업을 비동기로 실행하는 로직이 있으면 됐기 때문에 해당기능을 조사하여 개발하였다. thread를 나눠서 실행하고, 실행한 모든 thread가...

  • Netflix Eureka

    Eureka ?? netflix에서 개발한 MSA의 Service Discovery service 서비스들을 동적으로 관리하고, 상태를 확인할 수 있다. Eureka Example pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.4.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>io.github.mj-youn</groupId> <artifactId>Spring-Netflix-Eureka</artifactId> <version>0.1</version> <name>Spring-Netflix-Eureka</name> <description>Eureka</description> <properties> <java.version>1.8</java.version> </properties> <!-- spring cloud...

  • Spring boot에서 error page 처리하는 방법

    AbstractErrorController 사용 예제 package kr.co.ymtech.lafs.web.controller; import java.util.Map; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.web.servlet.error.AbstractErrorController; import org.springframework.boot.web.servlet.error.ErrorAttributes; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.http.ResponseEntity; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; /** * @author MJ Youn * @since 2020. 02. 12. * */ @Controller @RequestMapping("${server.error.path:${error.path:/error}}") // server.error.path를 불러오고, error.path를 불러오고 없을 경우...

  • Netflix Zuul

    Netflix Zuul ?? Netflix에서 개발한 MSA의 API Gateway 오픈소스 프로젝트 예제 dependency <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> <relativePath /> <!-- lookup parent from repository --> </parent> <groupId>kr.co.ymtech</groupId> <artifactId>Zuul-example</artifactId> <version>0.1</version> <name>Zuul-example</name> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope>...

  • MSA

    MSA ? Microservices Architecture 여러 기능을 하던 하나의 서비스를 여러 서버에 동작시키는 Monolithic Architecture와 반대되는 개념의 구조론 기능 별로 서비스를 만들고 각각의 서버를 독립적으로 관리/실행하는 구조론 Monolithic Architecture vs MSA (Microservices Architecture) 복잡한 서비스를 여럿이서 개발해야하는 경우 유리할 것으로 생각된다. 각자 맡은바 업무를 진행할 수 있다. Spring Cloud spring(spring boot)에서...

  • Spring boot의 properties 설정 파일의 위치

    properties 파일 ? Spring boot에서 서비스에 필요한 설정 정보 등을 텍스트 파일 형태로 관리하기 위한 설정 파일 application.yml spring boot에서 기본 설정되어 있는 properties 파일의 이름 *.yml, *.properties 파일 두가지 형태를 지원한다. 초기 spring boot 프로젝트를 생성하면 src/main/resources에 위치함 이름을 application-{profile}.properties나 application-{profile}.properties 형태로 파일로 생성하면 그에 맞는 설정 파일을 읽어온다....

  • GraphQL

    ※ 과거에 사내에서 진행한 교육 때 사용한 PPT 자료를 캡처하여 만든 posting이라 실제 소스가 아닌, 캡처하여 작성하였음 (물론 작성자 본인이 교육한 자료) GraphQL ?? Graph Query Language Facebook에서 개발한 Rest API를 대체하기 위한 호출 방법 같은 정보(화면상의 한 유저에 대한 데이터)를 동일한 API를 가지고 다른 데이터를 받을 수 있도록할 수...

  • SSH key를 사용하여 git 인증을하는 방법 (gitlab)

    Why ?? 회사 내에서 사용하는 gitlab의 pwd 유효기간이 3달이라서, 3달마다 gitlab의 source를 받는 서버의 gitlab pwd를 일일히 바꿔줘야하는 번거로움을 해결하기 위해서 ssh를 사용한 인증방법 테스트 1. SSH Key 생성 $ ssh-keygen -t rsa -C "gitlab.ymtech" -b 4096 Generating public/private rsa key pair. Enter file in which to save the key...

  • JAVA의 JUnit을 사용한 테스트 코드 작성

    JUnit Test ? java로 작성된 코드를 외부 프로그램을 사용하지 않고 테스트를 진행 할 수 있는 단위 테스트 도구. 함수 별로, 기능 별로 동작을 테스트 하는 도구 이기 때문에 단위 테스트 도구이다. spring에서는 기본적으로 test code를 작성할 수 있는 folder 구조를 같이 생성한다. 또한 JUnit4 버전을 dependency가 포함되어 있다. JUnit Test를...