일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 간단
- 자동
- ec2
- Redis
- login
- 머신러닝
- Zeppelin
- redash
- 자바
- Jenkins
- 클러스터
- gradle
- 설정
- 예제
- Docker
- 레디스
- spring
- SpringBoot
- vue
- Mac
- fastcampus
- Kafka
- 로그인
- java
- EMR
- config
- 젠킨스
- aws
- hive
- Cluster
- Today
- Total
목록JAVA (34)
코알못
Junit 에서 테스트 코드 작성중에 아래와 같이 Lombok 의 Slf4j를 이용하여 로그를 찍고자 하였으며 @Test void contextLoads() { log.error("Hello !!"); } 실행시 아래와 같이 이슈 발생 하였다. C:\Users\..\IdeaProjects\CodingTest\src\test\java\com\code\CodingTestApplicationTests.java:13: error: cannot find symbol log.error("Hello !!"); ^ symbol: variable log location: class CodingTestApplicationTests Junit 에서 Lombok를 사용하기 위해서는 아래와 같이 의존성을 추가해야하며, 추가시 ..
내 웹페이지의 로그인 할 때 ldap 을 연동하여 로그인 기능을 구현할 것이며 ldap 에 정의된 회원만 내 웹페이지 기능을 이용할 수 있도록 한다. 우선 웹페이지와 ldap 연동을 어떻게 하는지 보기 위해 아래 저자가 만든 git 소스를 통해 파악한다. 스타터 코드라 기본적으로 있어야 하는 코드만 넣어 심플하다. - https://github.com/works-code/embedded-ldap-login GitHub - works-code/embedded-ldap-login: 임베디드 ldap을 이용한 로그인 구현을 위한 스타터 코드 임베디드 ldap을 이용한 로그인 구현을 위한 스타터 코드. Contribute to works-code/embedded-ldap-login development by c..
서버의 메모리와 CPU를 모니터링 할일이 생겨 모니터링 툴이 필요했다. 여러 모니터링툴중 오픈 소스인 visualVM 을 사용해보자! java 프로세스 띄울시 jvm 옵션에 설정을 주어 해당 자바 어플리케이션의 자원 사용량을 볼 수 있으며 어떤 클래스에서 얼마나 사용하는지도 볼수 있어서 자바 소스 코드의 메모리 누수를 찾는데도 용이하다. (저자는 이전에 푸시 서비스를 구현하였으나 메모리 누수가 있어 해당 서비스로 누수 원인을 찾았다. 궁금하다면 아래 TMI 부분을 보면 된다.) 자 그럼 설치부터 진행해보자! (저자는 ec2 인스턴스에 자바 프로세스를 띄우고 모니터링을 로컬에서 띄우는 실습을 진행한다.) - 설치 : https://visualvm.github.io/download.html VisualVM:..
우선 Swagger 가 무엇인가 ? 구글에게 물어 보았다. 쉽게 말해 REST API 규격서를 쉽게 만들어 주는 프레임워크 이다. API 만들면 사용자들에게 규격서를 만들어 공유 해야 하는데 문서 작업만큼 귀찮고 힘든 일이 없다. 그리고 은근 시간이 많이 드는 작업이다. 우리는 규격서를 자동으로 만들어 주는 친구를 배워 규격서 생성에 대한 공수를 줄여본다! 자 그럼 만들어 보면서 어떤 친구인지 알아보자! 우선 API 를 Method 별로 몇개 만들어 보자 // Response package com.code.vo; import lombok.Data; @Data public class Response { String version; String method; } // mainController package..
회사에서 만든 공통 소스를 하나의 라이브러리로 관리하고자 하였으며 라이브러리를 관리하고 저장할 저장소가 필요하였다. Nexus 를 사용하면 maven 과 gradle 을 통해 쉽게 라이브러리를 올리고 받을수 있어 편리하다. 그럼 Nexus 를 구성해보자! 일단 nexus 를 설치한다. $ brew install nexus 시작은 아래와 같다. $ brew services stop nexus $ brew services start nexus $ brew services restart nexus 공식 문서를 참고한다. - https://guides.sonatype.com/repo3/quick-start-guides/proxying-maven-and-npm/ Nexus Repository Manager - P..
일단 클러스터로 모니터링하기위해서는 2개의 애플리케이션이 필요한데 인스턴스들을 집계할 Eureka 애플리케이션과 그 Eureka 클라이언트들의 Hystrix 모니터링을 집계할 Turbine 애플리케이션이다. 유레카 애플리케이션부터 설정을 시작해보자. eureka 클라이언트(hystrix 서버) > eureka 서버 > turbine 서버 (통합 UI) 1. eureka 서버 셋팅 # build.gradle implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server:3.0.4' // eureka # application.yml server: port: 9091 eureka: client: service-url: d..
hystrix circuit open/close 상태를 알기 위해 log 를 찍어 둘 수 있지만 dash board 를 이용해 실시간으로 확인 할 수 있다. 그러나 해당 대시보드는 실시간으로만 확인 가능하고 이전에 circuit open/close 상태를 볼 수 없어 로그를 찍어 두는 것을 추천 한다! 그럼 이용해보자! 1. dashboard 프로젝트를 만든다. # build.gradle implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix-dashboard:2.2.9.RELEASE' // hystrix dashboard # application - @EnableHystrixDashboard 추가 @EnableHyst..
hystrix 를 사용하고자 하는 이유는 아래와 같다! A 기능에 오류가 났을시 A가 복구 될 동안 더이상 호출하지 않음으로써 부하를 주고 싶지 않다. (Circuit Open) A 기능에 오류가 났을시 B 기능으로 대체하고 싶다. (Fallback) B기능 실행 중에 A 기능이 복구가 된다면 다시 A 기능을 실행 시키고 싶다.(Circuit Close) 물론 try, catch 를 이용하여 해당 기능을 만들수 있으나, 직관적으로 볼 수 있어 코드가 깔끔하고 유지보수가 어렵지 않게 된다. 자 그럼 만들어 보자 ! # build.gradle - 아래 사이트에서 원하는 버전, 빌드 도구 선택하여 정의 - meven : https://mvnrepository.com/artifact/org.springframe..