소개
저는 IT 엔지니어입니다. 언젠가 직업란에 "회사원?", "개발자?", "강사?" 어떤 단어를 선택해야 할 지 고민이 되었던 때가 있었습니다. 그러다가, IT 엔지니어라는 표현이 제가 잘 어울리는 직업명이라는 생각이 들어 지금까지도 직업란에는 "IT 엔지니어"라고 적고 있습니다.
직업이라는 것은 자신의 일을 나타내는 것이고, 일이라는 것은 재미있고, 도움이 되는 일이면 좋겠다는 생각을 가지고 있습니다. 누구나 다 원하는대로 일을 하며 살수는 없지만, 저는 제가 하는 있는 이 일을 좋아하는 있고, 잘하고 싶어하는 사람입니다. 개발자로써, 강사로써, 컨설턴트로써의 역할을 해 오면서, 매번 새롭게 출시되고 변화하는 IT 신기술을 따라가기에 급급하지만, 그래도, 남들보다 조금이라도 먼저 접하고, 전파하고, 사용하고 싶은 사람 중 한명입니다.
최근 관심을 가지고 있는 분야는 온라인 교육 컨설팅입니다. 그리고 관심있는 기술은 Cloud Native Architecture, Blockchain, Machine Learning, Kafka, Kuberbetes 등입니다. 이러한 기술은 실제로 강의도 하고 있고 업무에 적용해서 사용도 하고 있습니다. 하지만, 워낙 방대한 주제이다 보니, 아직까지도 계속 공부하고 있습니다.
머리속에 가지고 있는 것은 진정한 지식이 아니라고 합니다. 저는 제가 가진 지식과 경험을 다양한 방벙을 통해 공유하려 합니다. 그리고, 새로운 분야, 새로운 기술에 계속 도전하고 있는 IT 엔지니어가 될 것입니다.
- 現) 엔제이원컴퍼니 대표
- 現) 동국대학교 국제정보대학원 정보보호학과 대우교수
- 前) JP Mogan Chase AMJ Tech consultant (일본)
- 前) 삼성 SDS CMS 사업본부 책임 엔지니어
강의
전체6로드맵
전체1수강평
- 힘이 되는 수강평 !
너와나
2024.04.18
1
게시글
질문&답변
2024.04.15
jwt 인증401 뜹니다.
안녕하세요, 이도원입니다. 말씀하신 내용처럼 authorizationHeader 의 Bearer 토큰과 jwt가 동일한게 맞다면, user-service에서 토큰을 생성할 때 사용한 secret_key가 apigateway-service에서 토큰의 유효성 검사를 위해 사용하는 secret_key가 같은지와 유효시간에 문제가 없는지 등을 확인해 보셔야 합니다. 우선 apigateway-service의 AuthorizationHeaderFilter 클래스의 isJwtValid 메소드에서 디버깅을 해 보시면서, 한 단계식 확인해 보시면 좋을 것 같습니다. (사진) 추가 질문이 있으시면 글 남겨 주세요. 감사합니다.
- 0
- 2
- 78
질문&답변
2024.04.15
로그인 성공 후 어떻게 진행되는지 이해가 안갑니다.
안녕하세요, 이도원입니다. 말씀하신 내용처럼, apigateway-service에서 사용자의 로그인 요청을 받게 되면, user-service로 해당 요청을 보내게 됩니다. user-service에서는 로그인 성공일 경우 successfulAuthentication 메소드에서 Token 생성 된 유효기간 등의 정보를 Http Response Header에 저장해서 apigateway-service로 오게 됩니다. apigateway-servcei 에서 요청 (Http Request)가 전달 되었으니, 응답 (Http Response)도 apigateway-servcei로 가게 된다고 이해하시면 좋을 것 같습니다. 이 작업으로 Login 요청이 끝나게 되면 요청한 클라이언트에게는 Http Response Header에 user-service에 의해 발생 된 토큰이 저장된 것을 확인하실 수 있으며, 이 Token을 다음번 서비스 사용부터 (회원 목록 조회, 상품 조회 등의 비즈니스 메소드) 사용하게 됩니다. apigateway-servcei의 apply 메소드에서는 제일 먼저 처리하는 작업이 사용자의 요청에 Token에 저장되어 있는지 그리고 해당 토큰이 유효한지를 검사하여 해당 요청을 user-service로 전달할지 order-service로 전달할 지 등을 결정하게 됩니다. 말씀하신 질문처럼 user-service의 successfulAuthentication 메소드와 apigateway-service의 apply 메소드는 하나의 동작에서 처리되는 것이 아니라, 각각 분리된 동작이라고 이해하셔야 합니다. 추가 질문 사항이 있으시면 다시 글 남겨 주세요. 감사합니다.
- 0
- 2
- 313
질문&답변
2024.04.15
mvn spring-boot:run 실행불가 (꼭 해결해주세요)
안녕하세요, 이도원입니다. 작업하신 내용의 오류는 Powershell 가 관련이 있는 것 같습니다. Powershell에서는 '-' 이 포함된 옵션을 명령어의 일부로 인식해 버려서 우리가 의도했던 옵션 등의 의미로 사용되지 못하는 경우가 있습니다. 해당 명령어를 Powershell이 아닌 cmd에서 실행하시거나 명령어의 -D 부분부터의 옵션을 " ~ " 로 감싸시거나 ` ~ ` 으로 감싸신 후에 실행해 보시면 정상적으로 실행되실 것 같습니다. PS C:\work\toy-msa\user-service> mvn spring-boot:run "-Dspring-boot.run.jvmArguments='-Dserver.port=9003'" PS C:\work\toy-msa\user-service> mvn spring-boot:run `-Dspring-boot.run.jvmArguments='-Dserver.port=9003'` 참고로, Windows Intellij 에서는 Terminal 에서 실행되는 프로그램을 기본적으로 Powershell을 사용하고 있는데, 이것을 다른 것으로 변경해서 사용하실 수 있습니다. (사진) 감사합니다.
- 0
- 2
- 87
질문&답변
2024.04.12
8000번 포트 404에러 & 유레카 등록된 인스턴스
안녕하세요, 이도원입니다. 먼저 Eureka에 등록되는 서비스명은 기본적으로 사용하시는 PC환경이나 OS 마다 다르게 표시 될 수 있습니다. 올려주신 정보는 사용하시는 Windows PC의 호스트명 (DESKTOP-~ 으로 시작하는)에 서비스 명이 추가 된 경우인데, 이 부분은 user-service의 경우 아래와 같은 설정으로 변경해서 사용하고 있습니다. eureka: instance: instance-id: ${spring.application.name}:${spring.application.instance_id:${random.value}} 두번째로 APIGATEWAY-SERVICE를 이용해서 user-service를 호출할 때는 http://127.0.0.1:8000/user-service/users 와 같이 호출하려는 user-service의 endpoint 앞에 user-service라는 prefix를 붙여야 합니다. 이 부분은 apigateway-service의 appilcation.yml 등록 된 정보를 확인하시면 아실 수 있는데, 아래와 같이 설정되어 있다는 것은 Path로 /user-service/login으로 호출 되면, lb://USER-SERVICE가 서비스를 대응할 수 있도록 연계하는 설정이라고 보시면 됩니다. routes: - id: user-service uri: lb://USER-SERVICE predicates: - Path=/user-service/login - Method=POST 마지막으로 127.0.0.1:57368/users와 127.0.0.1:57787/login API는 다른 PORT인것으로 보아, suesr-service를 직접 호출하신 것인지, 재시작해서 실행하신 것이지 확인해 보시면 좋을 것 같습니다. 127.0.0.1:57368/users로 전체 등록 된 사용자 목록(회원 가입을 통해 가입 된)이 보이는 것으로 보아, 127.0.0.1:57368/login으로 확인할 경우 user-service에서의 직접 로그인 테스트하는 부분도 가능할 것 같습니다. 질문하신 내용과 다른 답변이 있으면 다시 글 남겨주시기 바랍니다. 감사합니다.
- 0
- 2
- 89
질문&답변
2024.04.12
AMQP 안돼요
안녕하세요, 이도원입니다. 문의하신 내용은 user-service나 apigateway-service에서 사용한 application 설정 정보가, config-service에서 native로 지정한 정보를 가져와야 하는데 그렇지 않는다는 내용인 것 같습니다. 우선 올려주신 정보 중에 http://127.0.0.1:8888/user-service/native 를 호출 하였을 때 404 오류가 발생하는 부부은 config-service의 application.yml 파일을 보면, spring.application.name=user-service로 되어 있는 부분은 무시하더라도 설정 부부은 문제 없어 보입니다. 다만, http://127.0.0.1:8888/user-service/native 를 호출 한다는 것은 native에 지정 된 폴더(${user.home}/Desktop/Work/native-file-repo)에 저장 된 여러 yaml 설정 파일들 중에서 user-service라는 이름의 yaml 파일 (user-service.yml 파일) 설정 정보 중, native라는 profile 을 호출하겠다는 의미 입니다. 올려주신 이미지 중에서 탐색기 이미지를 보면 해당 탐색기에는 application.yml ecommerce.yml uesr-service.yml user-service-dev.yml 파일 밖에 없기 때문에, http://127.0.0.1:8888/user-service/native 가 아닌, http://127.0.0.1:8888/user-service/default 또는 http://127.0.0.1:8888/user-service/dev 로 호출해 보셔야 합니다. 추가로 제가 윈도우 10에서 테스트 하였을 때는 아래와 같이 탐색기의 내용을 봤을 때, 실제 주소 부분을 확인해 보면, OndeDrive가 포함된 것을 보실 수 있습니다. 이건 제 환경일 경우이고, 작업하시는 환경에 맞는 경로를 정확하게 입력하였는지도 확인해 보시기 바랍니다. (사진) (사진) server: port: 8888 spring: profiles: active: native application: name: config-service cloud: config: server: native: searchLocations: file:///${user.home}/OneDrive/Desktop/Work/native-file-repo git: #default uri: https://github.com/joneconsulting/spring-cloud-config default-label: master 감사합니다.
- 0
- 3
- 84