저는 IT 엔지니어입니다. 언젠가 직업란에 "회사원?", "개발자?", "강사?" 어떤 단어를 선택해야 할 지 고민이 되었던 때가 있었습니다. 그러다가, IT 엔지니어라는 표현이 제가 잘 어울리는 직업명이라는 생각이 들어 지금까지도 직업란에는 "IT 엔지니어"라고 적고 있습니다.
직업이라는 것은 자신의 일을 나타내는 것이고, 일이라는 것은 재미있고, 도움이 되는 일이면 좋겠다는 생각을 가지고 있습니다. 누구나 다 원하는대로 일을 하며 살수는 없지만, 저는 제가 하는 있는 이 일을 좋아하는 있고, 잘하고 싶어하는 사람입니다. 개발자로써, 강사로써, 컨설턴트로써의 역할을 해 오면서, 매번 새롭게 출시되고 변화하는 IT 신기술을 따라가기에 급급하지만, 그래도, 남들보다 조금이라도 먼저 접하고, 전파하고, 사용하고 싶은 사람 중 한명입니다.
최근 관심을 가지고 있는 분야는 온라인 교육 컨설팅입니다. 그리고 관심있는 기술은 Cloud Native Architecture, Blockchain, Machine Learning, Kafka, Kuberbetes 등입니다. 이러한 기술은 실제로 강의도 하고 있고 업무에 적용해서 사용도 하고 있습니다. 하지만, 워낙 방대한 주제이다 보니, 아직까지도 계속 공부하고 있습니다.
머리속에 가지고 있는 것은 진정한 지식이 아니라고 합니다. 저는 제가 가진 지식과 경험을 다양한 방벙을 통해 공유하려 합니다. 그리고, 새로운 분야, 새로운 기술에 계속 도전하고 있는 IT 엔지니어가 될 것입니다.
- 現) 엔제이원컴퍼니 대표
- 現) 동국대학교 국제정보대학원 정보보호학과 대우교수
- 前) JP Mogan Chase AMJ Tech consultant (일본)
- 前) 삼성 SDS CMS 사업본부 책임 엔지니어
저는 IT 엔지니어입니다. 언젠가 직업란에 "회사원?", "개발자?", "강사?" 어떤 단어를 선택해야 할 지 고민이 되었던 때가 있었습니다. 그러다가, IT 엔지니어라는 표현이 제가 잘 어울리는 직업명이라는 생각이 들어 지금까지도 직업란에는 "IT 엔지니어"라고 적고 있습니다.
직업이라는 것은 자신의 일을 나타내는 것이고, 일이라는 것은 재미있고, 도움이 되는 일이면 좋겠다는 생각을 가지고 있습니다. 누구나 다 원하는대로 일을 하며 살수는 없지만, 저는 제가 하는 있는 이 일을 좋아하는 있고, 잘하고 싶어하는 사람입니다. 개발자로써, 강사로써, 컨설턴트로써의 역할을 해 오면서, 매번 새롭게 출시되고 변화하는 IT 신기술을 따라가기에 급급하지만, 그래도, 남들보다 조금이라도 먼저 접하고, 전파하고, 사용하고 싶은 사람 중 한명입니다.
최근 관심을 가지고 있는 분야는 온라인 교육 컨설팅입니다. 그리고 관심있는 기술은 Cloud Native Architecture, Blockchain, Machine Learning, Kafka, Kuberbetes 등입니다. 이러한 기술은 실제로 강의도 하고 있고 업무에 적용해서 사용도 하고 있습니다. 하지만, 워낙 방대한 주제이다 보니, 아직까지도 계속 공부하고 있습니다.
머리속에 가지고 있는 것은 진정한 지식이 아니라고 합니다. 저는 제가 가진 지식과 경험을 다양한 방벙을 통해 공유하려 합니다. 그리고, 새로운 분야, 새로운 기술에 계속 도전하고 있는 IT 엔지니어가 될 것입니다.
- 現) 제이원 컨설팅 대표
- 前) JP Mogan Chase AMJ Tech consultant (일본)
- 前) 삼성 SDS CMS 사업본부 책임 컨설턴트
강의
로드맵
전체 1수강평
- 멀티OS 사용을 위한 가상화 환경 구축 가이드 (Docker + Kubernetes)
- Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
- Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)
- 멀티OS 사용을 위한 가상화 환경 구축 가이드 (Docker + Kubernetes)
- 멀티OS 사용을 위한 가상화 환경 구축 가이드 (Docker + Kubernetes)
게시글
질문&답변
FeignErrorDecoder 질문
안녕하세요, 이도원입니다. 오류메시지가 공유되지 않아서 정확한 원인은 모르겠지만, 단순하게 문의하신 만으로는 FeginErrorDecoder에 대한 오류 또는 UserService에서의 order_service.excpetion.order_is_empty 메시지에 대한 오류 중에 한가지가 아닌가 싶습니다. 디버깅 하실 때, FeginErrorDecoder의 decode 부분에서 어디가 어떤 상태인지 확인해 보면서, order-service가 준비 되지 않아서 생기는 오류인지, 아니면, 말씀하신 것처럼 환경 변수 값에 대한 주입이 되지 않아서, 반영이 잘못 된 부분인지 확인이 필요할 것 같습니다. 예를 들어, 초기 값으로는 잘 설정되어 표시되지만, spring cloud bus에 의해서 refresh 된 데이터는 반영이 안되는 문제인지 등.. 그런경우라면 apigateway-service처럼 다른 서비스에서의 환경 변수 값들은 잘 변경되는지 등을 확인해 볼 수 있을 것 같습니다. 우선 아래 내용을 확인해 주시거나, 다시 글 남겨주시면 저희도 다시한번 찾아 보도록 하겠습니다. 오류의 정확한 메세지. (호출 했을 때 + 콘솔 로그 포함)다른 서비스들에서의 환경 변수가 잘 변경되는지 spring cloud bus에서 변경이 적용되기 전에는 정상적으로 출력되는지 위 내용을 확인해 보시면 좋을 것 같습니다. 감사합니다.
- 0
- 2
- 45
질문&답변
route 설정이 동작을 안하는거 같아요.
안녕하세요 , 이도원입니다. 올려주신 내용으로 테스트를 재현해 보니 문제가 발생되지 않는 것 같습니다. 강의에서도 설명 드렸던 것처럼 RouteLocator 작업이나, application.yml 파일로의 작업이나 같은 동작으로 해야 하는데, RouteLocator에서 application.yml로 돌아 왔다고 해서 동작을 안하거나 하지는 않습니다. 오히려 spring-cloud-starter-gateway-mvc를 이용하게 되면, WebFlux대신 Servlet을사용하는 방식으로 작동하게 된 것이고, RouteLocator는 application.yml 파일으로만(또는 Bean 생성), 필터 역시 AbstractGatewayFailterFactory 대신 Filter나 HandlerInterceptor 등을 이용해야 합니다. spring-cloud-starter-gateway-mvc로 변경 시, Filter 부분은 어떻게 수정하셨는지를 확인해 보시면 좋을 것 같습니다. 혹시, IDE에서 변경된 dependecy 등을 캐시 문제로 인식 못한 경우도 있을 수 있으니, IDE의 캐시를 삭제하고 실행해 보시면 좋을 것 같습니다. 추가 질문사항 있으시면 다시 글 남겨 주세요.감사합니다.
- 0
- 2
- 20
질문&답변
엔서블을 이용하여 톰캣 이미지 배포 후, 되돌리는 방법
안녕하세요, 이도원입니다. 답변이 늦어 죄송합니다. CI/CD로 배포를 하신다는 것은 CI 작업에서 형상관리도구(Git 등)에 관련 코드에 대해 버전 관리를 하고 있다고 생각됩니다. 따라서, 이전 상태로 돌아 가고 싶은 경우에는 Git으로부터 최신 브랜치의 코드를 가지고 빌드/배포 하는 것이 아닌, 지정된 브랜치 또는 코드로 롤백 후 빌드/배포 하시면 됩니다. 실제 현업에서는 젠킨스+CI/CD 만으로 작업하는 것이 아닌, Kubernetes 등과 조합하여 배포/운영하는 경우가 대부분입니다. Kubernetes에서는 기본적으로 롤링 업데이트나 롤백 등의 작업이 지원되기 때문에, 간단하게 이전 버전으로 돌아가는 작업이 가능합니다. 추가 질문사항 있으시면 글 남겨 주세요.감사합니다.
- 0
- 2
- 38
질문&답변
Harbor 인증서 설정 후 IP 변경
안녕하세요, 이도원입니다. 작업하시는 환경에서 PC에 할당되는 IP가 동적으로 변경되고 있는지 확인해 보시기 바랍니다. 다른 환경(장소 등)에서 다시 PC와 해당 서비스(하버 등)를 기동하셨을 때, 말씀하셨던 것처럼 IP가 변경되었다면, 등록에서도 다시 수정해 주셔야 합니다. 로컬에서 임의의 도메인을 hosts 파일에 등록하여 사용하셨다면, hosts 파일의 해당도메인명과 매칭되는 IP 정보만 변경하시면, 소스코드 변경하지 않으셔도 상관없지만, 어떤 상황에서든 현재 사용하시는 IP 주소에 맞게 환경 변경이 필요할 것 같습니다. 추가 질문사항 있으시면 다시 글 남겨 주세요.감사합니다.
- 0
- 2
- 30
질문&답변
Driver org.mariadb.jdbc.Driver is not suitable for jdbc:mysql://localhost:3306/mydb
안녕하세요, 이도원입니다. H2 console을 이용하여 mariadb에 접속하시는데 오류가 발생된것 같습니다. 먼저 확인해 보실 수 있는 내용은 h2 console을 실행한 프로젝트(Spring Boot)에 mariadb 드라이버가 pom 파일(Maven의 경우) 또는 build.xml(Gradle의 경우)에 설정되어 있는지 확인 h2 console을 사용하지 않고, 별도의 DB Client 도구(커맨드라인, 터미널, MySql workbench, Heidi 등)을 이용하여 접속되는지 확인 아마도 JDBC 드라이버에 대한 인식문제로 보여지는데, Spring Boot 실행시 콘솔 로그에 오류가 발생했는지 확인해 보시고, 드라이버가 잘 등록되었는지도 확인해 보시기 바랍니다. org.mariadb.jdbc mariadb-java-client 3.5.2 (사진)감사합니다.
- 0
- 2
- 64
질문&답변
도커로 사용해도 카프카 커넥트 설정 다 따라해야하나요?
안녕하세요, 이도원입니다. 도커를 이용하여 어디까지 사용하실지에 따라서 설정해 줘야하는 부분이 달라질 것 같습니다. 만약 카프카만 사용하실거라고 하면, 작년에 등록된 카프카 이미지(https://hub.docker.com/r/apache/kafka)를 직접 사용하시면 편하게 기동하실 수 있고, 그외 카프카 커넥트나 드라이버 등은 직접 설정해 주셔야 합니다. 참고하시기 바랍니다. 감사합니다.
- 0
- 2
- 73
질문&답변
프로젝트에 카프카 쓸때도 설정 다 해줘야하나요?
안녕하세요, 이도원입니다. 카프카 커넥트를 사용하실 때, 파일정보 커넥트와 같은 플러그인은 기본 탑재되어 있는데, 특정 DB에 필요한 JDBC 커넥터 등은 작업으로 드라이버 설정이 필요한 것으로 알고 있습니다. 스프링에서 직접 드라이버 설정까지 해 주지는 않습니다. 참고 하시기 바랍니다. 감사합니다.
- 0
- 2
- 36
질문&답변
강의자료
안녕하세요, 이도원입니다. 강의에 사용하는 교안은 아래 github에서 공유하고 있습니다. 암호를 제거하고 다시 올리기는 했는데, 혹시라도 같은 문제가 발생한다면 다시 글 남겨 주세요. 감사합니다.
- 0
- 2
- 123
질문&답변
spring 부트 3.5 사용중인데 zuul 어떻게 해양할까요
안녕하세요, 이도원입니다. Zuul 현재 스프링 클라우드에서 유지 관리 대상이 아니기 때문에 사용되지 않고 있습니다. 만약 이전에 사용하셨던 라이브러리등이 현재 시점에서 사용되지 않는다면, 직접 라이브러리를 프로젝트에 추가하거나, public maven repository 이외 private repository를 추가하시는 방법도 있지만, JDK, Spring Boot, Spring Cloud에서 사용하는 버전과의 호환성도 확인해야 하기 때문에, 쉽게 사용되지 않을 수도 있습니다. 라이브러리의 버전을 변경하는 것으로 해결되지 않고, API 자체도 수정되었기 때문에, 코드의 변경이 필요한 경우가 많습니다. 실제 프로젝트에서도 최신 버전이 보안이나 여러가지 문제에서도 개선된 것이 확실해도, 쉽게 업그레이드 못하는 경우도 종종 있습니다. 강의에 대한 실습에 대해서는 spring boot 3.2.x + spring cloud 2023.0.x 버전으로 업데이트하여 업데이트 했는데, 강의설명에 대한 부분은 변경하지 않았습니다. 올해 상반기에는 강의 설명 부분에서도 불필요한 부분이나 Deprecated 된 부분은 삭제하고 새로운 내용으로 업데이트 할 예정입니다. 감사합니다.
- 0
- 2
- 181
질문&답변
데이터가 null만 나오는 이유
안녕하세요, 이도원입니다. 아래 kayrr님이 답변 주신 것처럼 Lombok 플러그인으로 처리가 되는지 확인해 보시면 좋을 것 같습니다. Lombok 플러그인의 역할이 Setter/Getter 메소드의 주입이나, 생성자, 기본 Object 메소드들의 재정의 기능 등이 포함되어 있다보니, 결과 값이 null이 포함되어 있다는 것은 Setter가 제대로 작동되지 않은 경우 또는 Setter에 주입하기 위한 필드명에 차이(대소문자 등의 오류)가 있을 수도 있다고 생각됩니다. 감사합니다.
- 0
- 5
- 127