본문 바로가기

Cloud-Native Day 2019 Seoul 후기 Keynote Speech(사친 쉬리다르, 서비스 및 CSO 부사장, Pivotal America & APJ) 현재 시대에서 소프트웨어의 중요성 강조 왜 피보탈인지 여러가지 장점이 많음. 클라우드 네이티브 IT를 위한 4가지 요소와 상관관계- DevOps, CI/DB, Container, 그리고 MSA 서론 Adrian Cockcroft 시장 변화 빠른 대응 비지니스에 집중 클라우드 네이티브 사용의 목적 클라우드 컴퓨팅의 장점을 활용 개발 생상성 및 IT 속도를 극대화 클라우드 네이티브 4요소 - 비지니스를 만들기 위한 구성요소 DevOps를 통한 서비스 개선 속도의 증가 CI/CD를 통한 개발-운영 간 업무 속도의 증가( 자동화) 서비스 컴포넌트 별로 개발 컨테이너를 통한 IT 유연성 개선(컨테이너) .. 더보기
@Postconstruct 과 @CachePut @Postconstruct과 @CachePut을 사용하면서 생겼던 이슈. 문제 @Postconstruct를 이용하여 캐시 데이터를 저장하는 로직을 구현하였는데, (캐시가 put되지 않는)저장되지 않는 이슈가 발생했다. 문제를 해결하기 위해서 알아야 했던 것 1 @CachePut을 사용하여 데이터를 캐시에 저장할 때, CacheAspectSupport를 상속받은 CacheInterceptor 클래스의 invoke()메서드를 통해서 execute()메서드를 실행한다. 중요한게 이때 initialized값을 통해서 aspect를 사용할 수 있는지에 대해서 체크하고 캐시에 저장한다. initialized값은 기본값이 false이고, false인 경우에는 저장없이 실행만시킨다. 아래 코드는 execute()메서드.. 더보기
[스터디] Test Code1 테알못(테스트 잘 모르는 내가)이 테알못(테스트 처음 접한 개발자)에게 'Test'를 발표 주제로 선정한 이유 현재 스터디는 개인 발표로 스터디를 진행하고 있다. 스터디에 참여하시는 개발자 4분이 테스트코드를 작성하는 것에 대한 중요성을 별로 느끼지못하고 테스트를 작성하지 않고 있었다. 발표준비를 하면서 나 또한 테스트에 대한 정리와 공부를 할 수 있고, 스터디원 분들에게도 도움이 될거 같아 'Test'로 발표주제를 정하였다. 발표 내용은 1년전에 수강했던 박재성 강사님의 TDD수업에서 배웠던 내용, Spring boot Test 내용으로 정했다. 테스트는 본인이 코드를 만들어 내야하기 때문에 내용이 많은 것보다 실습위주로 진행하는 것이, 발표 이후 더 많은 도움이 될거라고 생각했고 실습하는 시간을 더 .. 더보기
객체지향의 사실과 오해 부제 : 역할, 책임, 협력 관점에서 본 객체지향 책에서 말하고자 하는 내용은 부제에 쓰여진 객체의 역할, 책임, 협력에 대한 중요성과 비유(이상한 나라의 엘리스, 커피집 등..)를 통한 독자의 이해를 돕고 있다. 2달에 걸쳐서 짬짬히 읽어서 전체 내용을 세세하게 읽지는 못했지만, 인상 깊었던 내용을 남겨본다. 1. 오해 : 객체지향세계와 현실세계의 차이점?처음 자바 개발을 접하면서 “현실세계와 똑같이 객체를 설계하지 못해서 스스로를 많이 자책 했었다”그리고 지금까지도 찜찜함으로 남아 있던 해답을 이 책에서 찾을 수 있었다.요약객체지향을 이해하기 위해서 실세계의 모방이라는 개념은 아주 훌륭한 개념이다.하지만, 이것은 객체지향을 이해하는데 걸림돌이 되는 과거의 인습일 뿐이다.현실 속의 객체와 소프트웨어 객.. 더보기
intellij로 visualVM을 쉽게 사용하기. visualVM이란?소개는 아래에 좋은 글을 참조.https://beyondj2ee.wordpress.com/2012/11/16/eclipse%EC%97%90%EC%84%9C-visualvm-%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0/http://bcho.tistory.com/789 1. visualVM을 설치 https://visualvm.github.io/ 2. intellj에서 visualVM Lanuncher 플러그인 설치 3. visualVM Lanchuer에 visualVM.exe 파일 등록 인텔리J에 새로 생긴 위와 같이 생긴 run, debug 버튼을 누르고 아래와 같은 visualvm.exe 파일경로를 넣어주면 끝입니다.C:\visualvm\visualvm_139\.. 더보기
Same class different classloader causing NoSuchBeanDefinitionException 문제 문제점 rome를 통한 rss 개발을 진행하고 있었다.헌데..rss 내부 라이브러리 메소드는 잘 동작하는데.. rss 라이브러리를 상속받아서 구현한 코드는 동작이 안되는것이 였다..!! 동료분과 함께 디버깅을 아무리해보아도 알수 없었다.. 드디어 디버깅중 라이브러리와 커스터마이징한 소스가 다른 클래스로더를 사용하고 있다는것을 발견하게 되엇다.. 발견한 문제는 spring-devtools가 커스터마이징한 클래스를 RestartClassLoader라는 녀석으로 로드하는 것이 문제였다!! 해결방안----------------------------------------------------spring-devtool을 제외시키고 다시 실행하니 잘 실행 되었다!!! 으아!!!!! 참고할 사이트https://gith.. 더보기
스프링 프로퍼티 설정 주입3 - 실시간(run-time)으로 properties Relaod 보통 스프링에서 properties는 DB설정값 처럼 변하지 않는 정적인 데이터를 많이 사용합니다. 하지만, 이러한 프로퍼티값을 변경해야 할 경우가 발생하면 어떻게 해야하나요? 우선, properties를 다시 설정하고 build한 후 다시 재배포하는 과정을 생각할 수 있다. 하지만, 이러한 방법은 재배포를 해야하는 단점이 있다. 이런 경우에 properties의 변경을 감지하여 바로 반영하는 쉬운 방법 있었다. Apache Commons Configuration 이다 Apache Commons Configuration version 1은 정말 손쉽고 빠르게 적용할 수있는 장점이 있다. Apache Commons Configuration version 1에 대한 훌륭한 설명을 해주는 글 이에 비해 몇가지.. 더보기
스프링 프로퍼티 설정 주입1 - @PropertySource와 Enviroment 스프링 프로젝트를 하면서 jdbc 설정 값, version 등과 같이 정적인 데이터를 프로퍼티로 많이 사용합니다. 우리는 프로퍼티를 annotation으로 쉽게 외부값을 가져와서 사용할 수 있습니다. 스프링에서 런타임시 프로퍼티 값을 가져오기 위해서 사용할 것 2가지.PropertySource 스프링 표현 언어 SpEL(spring Expression Language) @PropertySource를 선언. @Configuration @PropertySource("classpath:static/properties/common.properties") public class AppConfig { } @PropertySource 어노테이션에 coommon.properties의 위치를 넣어주면, Enviromen.. 더보기
스프링 소개(introduction)-정리 스프링 doc을 보면 introduction부분의 개념을 정리해보았다. 1. 스프링 프레임워크 소개 스프링 프레임워크는 자바 애플리케이션 개발을 위한 포괄적인 인프라스트럭쳐를 제공하는 자바 플랫폼이다. 스프링은 당신이 애플리케이션에 집중할 수 있도록 인프라스트럭쳐를 다룬다. 스프링을 사용하면 “plain old Java objects”(POJOs)로 어플리케이션을 만들고 엔터프라이즈 서비스를 비침투적으로 POJO에 적용할 수 있다. 이 능력은 Java SE 프로그래밍에 적용되고 전제 혹은 부분적으로 Java EE에 적용된다. Spring Framework 특징 크기와 부하의 측면에서 경량 제어 역행(IoC)를 통하여 어플리케이션의 느슨한 결합을 도모 관점지향(AOP) 프로그래밍을 위한 풍부한 지원을 함... 더보기
스프링 프로퍼티 설정 주입2 - @Value를 사용하자 0. @PropertySource로 enviroment꺼내기 common.properties @Configuration@PropertySource("/common.properties")public class EnvironmentConfig { } doc에서 PropertySource의 다양한 옵션을 확인하시면 좋을거 같습니다. @Component public class PrintOutByEnvironment { @Autowired private Environment env; @PostConstruct private void init(){ System.out.println(env.getProperty("test.str")); } } 위와 같이 Environment에서 test.str를 꺼내서 확인 할 수 .. 더보기