소개
저는 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.30
"섹션3. 다국어 처리를 위한 Internationalization 구현 방법" 관련 문의드립니다.
안녕하세요, 이도원입니다. 말씀하신 것처럼 Accept-Language 설정을 required=false로 설정 하였기 때문에, 클라이언트에서 요청할 때 해당 헤더가 없으면 기본값으로 사용되어야 하는 것이 맞습니다. 다만, 사용하시는(테스트하는) Tools에 따라서 이러한 값이 다르게 전달 될 수도 있습니다. 예를 들어 Postman에서는 Accept-Language 값을 사용자가 지정하지 않았을 경우에도 정상적으로 Locale 값이 null로 설정되어 사용될 수 있는 반면에 Talend와 Tool에서는 Accept-Language 값이 없을 경우 Locale 형태가 아니라 String 값으로 기본값이 설정되어 전달 됩니다. 따라서, 예제에서 실행 메소드는 Parameter의 인자값 형태가 달라서 실행되지 않습니다. 아래 예제처럼 RequestHeader를 String으로 전달 받을 수 있는 메소드를 등록하신 다면, Talend에서 Accept-Language 값을 전달하지 않을 때에도 정상적으로 실행되는 것을 보실 수 있습니다. @GetMapping(path = "/hello-world-internationalized") public String helloWorldInternationalized( @RequestHeader(name="Accept-Language", required=false) Locale locale, HttpServletRequest req) { return messageSource.getMessage("greeting.message", null, locale); } @GetMapping(path = "/hello-world-internationalized2") public String helloWorldInternationalized2( @RequestHeader(name="Accept-Language", required=false) String locale, HttpServletRequest req) { return messageSource.getMessage("greeting.message", null, new Locale(locale)); } (사진) 따라서 예제에서 사용한 Locale 값으로 인해 기본값이 전달되지 않았던 것 같습니다. 이 부분을 String으로 변경해서 사용해 보시면, Accept-Language 값을 전달하지 않아도 예제가 실행되실 것 같습니다. 감사합니다.
- 0
- 2
- 34
질문&답변
2024.04.30
안녕하세요 질문이 있습니다.
안녕하세요, 이도원입니다. MSA에서 분산 처리되어 저장 된 데이터에 대해서 동기화 하는 다양한 방법 중에 한가지인 MQ를 이용한 방법에 대해서 강의에서 소개하였습니다. MQ에 메시지를 전송하는 쪽은 메시지를 사용하는 쪽에 관심을 두지 않고 오로지 전송하는 쪽에만 관심을 두고 역할을 하게 될 것이며, 메시지를 소비하는 쪽은 보낸 쪽과는 상관없이 MQ에 저장된 메시지를 인식하고 메시지의 규격이 자신이 이해하는 형태와 동일하면 해당 메시지를 사용하게 될 것입니다. 이렇게 책임의 분할을 통해 의존성을 낮출 수 있고 성능도 좋아지게 될 것입니다. 문의하신 내용 중에 DB에서의 조회를 어떻게 하느냐에 대한 부분은, 일단 MQ에 저장 된 메시지를 사용하려는 소비자(Consumer) 측에서는 이벤트에 의해 메시지가 생성 되었음을 인식하고(구독 방식이 많이 사용 됩니다) 해당 메시지를 DB에 업데이트 하게 됩니다. 조회 요청이 들어 왔을 때 메시지를 가져가는 것이 아니라, 사전에 일정한 주기나 메시지 저장 이벤트 등에 의해 MQ로부터 메시지를 가져와서 DB에 반영하게 됩니다. 이러한 작업을 위해서는 말씀하신대로 애플리케이션에서 메시지 수신을 위한 이벤트 처리가 반영되어 있어야 할 것이고, Spring Boot에서는 Spring Kafka에서 제공하는 @Listenere 과 같은 어노테이션을 통해 처리할 수 있습니다. MQ와 DB와 같은 스토리지 간에 데이터 동기화는 이렇게 프로그래밍적인 방식고 가능하고, 강의에서도 소개한 Kafka Connect와 같은 서비스나 다른 동기화 매커니즘 등을 통해서도 가능합니다. 추가 질문사항 있으시면 다시 글 남겨 주세요. 감사합니다.
- 0
- 1
- 42
질문&답변
2024.04.26
앤서블 컨테이너 생성에서 어려움을 겪고 있습니다.
안녕하세요, 이도원입니다. 말씀하신 Ubuntu 환경에서 Dind 방식의 Docker가 실행 될 수 있도록 이미지 등록했습니다. 이미지 환경은 아래와 같습니다. AWS EC2 Ubuntu 22.04 + Docker 26.1.0 환경에어 도커 이미지 생성 했습니다. edowon0623/ubuntu-server:ubuntu22.04 --> Ubuntu 22.04 설치 edowon0623/sshd-server:ubuntu22.04 --> Ubuntu 22.04 + sshd 설치 edowon0623/docker-server:ubuntu22.04 --> Ubuntu 22.04 + sshd + Docker edowon0623/ansible-server:ubuntu22.04 --> Ubuntu 22.04 + sshd + Docker + Ansible 설치 참고로 sshd 서버에 접속 시 암호는 P@ssw0rd 로 앞서 다른 환경과 동일합니다. 해당 이미지는 Ubuntu OS가 설치 된 환경에 Docker를 먼저 설치하시고 위 이미지들을 docker pull 하셔서 사용하시면 됩니다. 실행 해 보시고 문의사항 있으시면 다시 글 남겨 주시기 바랍니다. 감사합니다.
- 0
- 3
- 134
질문&답변
2024.04.25
앤서블 컨테이너 생성에서 어려움을 겪고 있습니다.
안녕하세요, 이도원입니다. 답변이 늦어 죄송합니다. AI 인턴 답변이 달려 있어, 미쳐 꼼꼼하게 확인하지 못했습니다. 문의사항 내용은 Ubuntu 환경에서 제공해 드린 ansible 이미지를 사용하려고 했을 때 오류가 발생하는 문제점인 것 같습니다. 저희가 제공해 드리는 ansible 이미지가 Centos에서 작성된 이미지이기 때문에, Linux에 설치 된 Docker Engine에 따라 다르게 실행될 수 있을 것 같습니다. 확인해 보니, Centos 에서 실행할 때에는 해당 ansible 이미지가 문제가 없는 것 같습니다만, Ubuntu 에서는 올려주신 문제와 같은 오류가 있음을 확인했습니다. Ubuntu에서 실행 가능한 이미지 (ubuntn + docker + ansible)를 생성하는 데로 다시 공유해 드리도록 하겠습니다. 추가로, 저희가 강의에서 docker를 사용하는 목적은 CI/CD 테스트를 하는데 있어, 여러 VM이 필요로 하는 경우가 있는데, VirutalBox와 같은 툴이 Windows나 MacOS Intel chip 경우에는 잘 작동되지만, M1 chip을 사용하는 MacOS의 경우에는 VirutalBox를 사용할 수 없어서, docker in docker 방식으로 VM을 설치하고 해당 VM에 docker가 설치 되어 있는 것처럼 꾸며서 실습환경을 구성해 보았습니다. 그런데, 다양한 환경에서 DinD 방식으로 실행하는데에 문제점이라던가 SSH 서버가 기동되지 않는 등의 이슈로 인해 별도의 VM 관련 강의를 제작하여 공유해 드렸습니다. 이 때는 MacOS M1 에서도 사용 가능한 VM 서비스에 대한 부분도 추가하긴 했습니다. 결론 부터 말씀드리면, 일반적인 VM 환경에 OS와 Docker + SSH를 설치하는데에 큰 문제가 없다면, 굳이 강의에서 사용한것과 같은 DinD 방식의 Docker는 사용하지 않는 게 좋다고 생각됩니다. VM을 구성하신 후에는 OS를 설치한 상태에서 추가로 Ansible과 Docker를 각 OS에 맞춰 설치해서 환경을 구축하신다면, 강의에서 사용하는 예제는 모두 실행가능합니다. 내용이 길어졌는데, 요약하면, Ubuntu에서 사용할 수 있는 Dind 이미지 (ubuntu + docker + ansible + ssh)는 작업 되는 대로 공유 예정 VM 환경 구축이 가능하시다면 Dind 이미지 사용하는 것 대신, Linux VM에 직접 Docker + Ansible _ SSH 설치 이렇게 될 것 같네요. 추가 질문 사항 있으시면 다시 글 남겨 주세요. 가능한 빠른 답변 드리도록 하겠습니다. 감사합니다.
- 0
- 3
- 134
질문&답변
2024.04.25
copy 모듈 문제
안녕하세요, 이도원입니다. 질문하신 내용보고 IP가 이상하네? 라고 했었는데, 답을 구하셨네요. 추가 질문사항 있으시면 다시 글 남겨 주세요. 감사합니다.
- 0
- 2
- 51