안녕하세요. 이번 포스팅에서는 PM2를 설치하여 Node.js를 백그라운드로 실행하는 방법을 확인해보겠습니다. 현재 저는 kibana 관련 작업중이고요. node.js로 실행할 수 있는 kibana를 백그라운드로 실행하기 위해서 키바나 버전과 호환되는 node를 설치하였고 이를 백에서 실행할 수 있도록 PM2를 설치하고자 합니다. 우선 PM2 메인 홈페이지로 이동해주세요. https://pm2.keymetrics.io/ PM2 - Home Advanced process manager for production Node.js applications. Load balancer, logs facility, startup script, micro service management, at a glance. pm2..
안녕하세요. node js 버전을 관리하는 nvm 을 설치해보겠습니다. nvm은 Node Version Management의 약자로 깃허브 주소는 아래에 있습니다. https://github.com/nvm-sh/nvm GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions Node Version Manager - POSIX-compliant bash script to manage multiple active node.js versions - GitHub - nvm-sh/nvm: Node Version Manager - POSIX-compliant bash ..
안녕하세요. 오늘은 Spring Boot 서버가 종료될 경우 클라이언트의 요청에 대해서 응답받지 못한 이슈에 대해 공유하고자 합니다. 클라이언트는 별도의 spring boot 서버였고 서버A라 지칭하겠습니다. 네트워크 타임아웃에 대해서 30초의 간략한 시간으로 설정해두었습니다. 서버는 마찬가지로 별도의 spring boot 서버였고 서버B라 지칭하겠습니다. 서버A에 의해 다수의 요청을 받는 환경에서 서버B를 종료했을 경우, 서버A에서 네트워크 타임아웃이 발생하였습니다. 그 이유는 바로 서버B의 종료가 급격하게 이루어짐으로써 몇개의 요청에 대한 응답이 유실되었기 때문인데요. 이것은 서버의 종료(shutdonw) 속성이 IMMEDIATE 으로 되어있었기 때문입니다. 해당 속성은 서버가 종료될 때, 들어온 요..
안녕하세요. 오늘은 스프링 프레임워크를 사용할 때, 반드시 숙지해야되는 개념인 DI(Dependency Injection), 의존주입에 대한 이야기를 진행해보려고 합니다. 우선 DI라는 개념은 스프링에만 존재하는 개념은 아닙니다. 기존에 다른 프레임워크에서부터 발전해온 개념으로 IOC를 구현하기 위해 사용되던 방법으로 DI를 써왔는 흐름으로 알고 있습니다. 따라서 Spring에서 봤던 DI와 기존 DI간의 매치가 아직 안되신분들이 있을 것 같아서 그것부터 바로잡아 보겠습니다. Dependency Injection 우선 기존의 의존주입을 보기전에, 의존이라는게 어떤 것인지부터 알아야합니다. Spring MVC를 토대로 개발을 해왔던 분이시라면 충분히 아시겠지만 다시 정리하는 차원에서 의존이란 아래의 코드를..
안녕하세요. 저는 현재 java/spring 환경에서 upbit API를 활용하여 트레이딩 시스템을 개발하고 있습니다. 트레이딩 시스템은 현재 1차 배포까지 완성이 되어 트레이딩을 진행하고 있으며, 그간에 있었던 내용중 공유하고자 하는 내용이 있어 글을 작성합니다. 현재 트레이딩 시스템의 가장 주요한 난제는 알고리즘 최적화입니다. 적절한 알고리즘에 따라 필요하지 않은 로직은 수행하지 않고 시간을 많이 잡아먹는 로직, 혹은 코인에 대해 트래킹이 필요하고 왜 그랬는지 대처를 해야 좀더 적절한 대응이 가능하게 됩니다. 그 중 가장 기본은 각 코인당 발생하는 동일한 service를 태웠을 때 허용 가능한 시간동안의 로직을 수행했느냐를 체크하는 것이 필요했습니다. @Slf4j @RequiredArgsConstru..
스프링 부트로 잘 개발을 하다가 가끔 개발환경이 바뀌거나 낯선 환경에서 다시 개발을 진행해야할 때 부트올라가는 속도가 많이 느려질 때가 있다.(저같은 경우는 자바에서 코틀린으로 변경했을 때 서버 올라가는 속도가 현저히 느려졌음) 스프링부트 디펜던시도 web이랑 lombok 두개가지고 예제코드 작성하면서 놀고있었는데... 갑자기 20초대의 실행속도라니 미치고 팔짝뛸 노릇이었다.. 로그에 혹시 뭐 없나.. 좀 주의깊게 보고자 스프링부트 프린팅이 출력되고 나서 한가지 문구가 출력되는 현상을 보았는데.. 아래와 같다.! Please verify your network configuration (macOS machines may need to add entries to /etc/hosts). 네트워크 설정과정에서..
안녕하세요. 오늘은 @ConfigurationProperties 어노테이션을 활용하여 스프링의 db 설정을 관리하는 방법을 소개해보겠습니다. https://sas-study.tistory.com/327 [Spring Boot] 스프링부트 @ConfigurationProperties 어노테이션으로 application.properties에서 관리하기 @ConfigurationProperties @Target({ElementType.TYPE, ElementType.METHOD}) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ConfigurationProperties { @AliasFor("prefix") String value(.. s..
안녕하세요. 오늘은 스프링 시큐리티를 활용하면서 궁금했던 부분을 공부해보았습니다. 스프링 시큐리티는 SecurityContext에 인증된 Authentication 객체를 넣어두고 현재 스레드 내에서 공유되도록 관리하고 있는데요. 아래는 SecurityContext 인터페이스에 기재된 주석의 일부를 발췌했습니다. (SecurirtContext : Interface defining the minimum security information associated with the current thread of execution.) 인증이후 편의적으로 현재 인증된 세션유저를 가져오기 위해 @AuthenticationPrincipal 어노테이션을 통해 UserDetails 인터페이스를 구현한 유저 객체를 주입할 ..