저는 IT 엔지니어입니다. 언젠가 직업란에 "회사원?", "개발자?", "강사?" 어떤 단어를 선택해야 할 지 고민이 되었던 때가 있었습니다. 그러다가, IT 엔지니어라는 표현이 제가 잘 어울리는 직업명이라는 생각이 들어 지금까지도 직업란에는 "IT 엔지니어"라고 적고 있습니다.
직업이라는 것은 자신의 일을 나타내는 것이고, 일이라는 것은 재미있고, 도움이 되는 일이면 좋겠다는 생각을 가지고 있습니다. 누구나 다 원하는대로 일을 하며 살수는 없지만, 저는 제가 하는 있는 이 일을 좋아하는 있고, 잘하고 싶어하는 사람입니다. 개발자로써, 강사로써, 컨설턴트로써의 역할을 해 오면서, 매번 새롭게 출시되고 변화하는 IT 신기술을 따라가기에 급급하지만, 그래도, 남들보다 조금이라도 먼저 접하고, 전파하고, 사용하고 싶은 사람 중 한명입니다.
최근 관심을 가지고 있는 분야는 온라인 교육 컨설팅입니다. 그리고 관심있는 기술은 Cloud Native Architecture, Blockchain, Machine Learning, Kafka, Kuberbetes 등입니다. 이러한 기술은 실제로 강의도 하고 있고 업무에 적용해서 사용도 하고 있습니다. 하지만, 워낙 방대한 주제이다 보니, 아직까지도 계속 공부하고 있습니다.
머리속에 가지고 있는 것은 진정한 지식이 아니라고 합니다. 저는 제가 가진 지식과 경험을 다양한 방벙을 통해 공유하려 합니다. 그리고, 새로운 분야, 새로운 기술에 계속 도전하고 있는 IT 엔지니어가 될 것입니다.
現) 엔제이원컴퍼니 대표
現) 동국대학교 국제정보대학원 정보보호학과 대우교수
前) JP Morgan Chase AMJ Tech consultant (일본)
前) 삼성 SDS CMS 사업본부 책임 엔지니어
Khóa học
Đánh giá khóa học
- [Phiên bản cũ] Cài đặt IntelliJ IDEA để phát triển ứng dụng web (phiên bản 2020)
- [Phiên bản sửa đổi 2023-11-27] Phát triển RESTful Web Services bằng Spring Boot 3.x
- Hướng dẫn hoàn hảo về các mẫu thiết kế microservice
- Ứng dụng kiến trúc microservice (MSA) phát triển với Spring Cloud
- Hướng dẫn hoàn hảo về các mẫu thiết kế microservice
Bài viết
Hỏi & Đáp
마이크로서비스와 모듈러 아키텍처 선택 질문
안녕하세요, 이도원입니다. 데이터베이스의 선택과 용도가 MSA 구조를 선택하거나 단위를 나누는 중요한 요소임에는 분명합니다. 실제로 저도 데이터를 기준으로 Monolithic -> Microservice 전환작업을 고려하기도 하고, 더나아가서 데이터의 사용량과 프로세스에 따라 서비스를 분리하는 작업을 고려하기도 합니다. 강의에서도 중간중간 말씀드리기는 했는데, 무조건이라는 것없다고 생각됩니다. 다만, DB가 여러 종류가 어떤 이유에 있어 프로젝트에 모두 도입되어야 할 경우라면, 그 용도에 맞춰 서비스가 분할되어야 할 것이고, 그렇다면, MSA 구조로 갈 수 있는 충분한 이유가 된다고 생각됩니다. 물론 하나의 프로젝트에서도 다수의 DB를 사용할 수 있도록 구성할 수도 있기 때문에, 말씀드렸던것처럼 절대적인 기준으로 결정하기는 조금 어렵지 않나 싶습니다. 충분한 답변이 되지 못했다면, 다시 글 남겨주시기 바랍니다. 감사합니다 .
- 0
- 2
- 20
Hỏi & Đáp
MSA 아키텍쳐 프로젝트 구성 방식
안녕하세요, 이도원입니다. 말씀하신 내용처럼 강의에서는 전체 프로젝트를 구성하는 ROOT Project 밑으로 여러 서비스들 (user, product, order 등)을 SUB Project 개념으로 등록하여 관리하도록 했습니다. 실제로 Maven이나 Gradle로 자바 프로젝트를 관리할 때도, 다수의 프로젝트라 하더라도 하나의 Category나 Group으로 묶어 관리하는 경우가 편할 수 있습니다. 다만, 강의에서 말씀드린 내용처럼 배포 단위, 그리고 실제 개발하는 단위까지 고려하신다면, 이 부분은 팀의 규모나 개발자, 역할 등에 따라 나뉘어야 할 것 같습니다. 하나의 조직, 팀, 개발자가 전체를 프로젝트를 공유하고, 이과정에서 세부적인 모듈이나 코드를 또 분리해서 개발할 수도 있고, 각각 1개씩 프로젝트를 전담해서 개발할 수도 있고, 배포를 담당할 수도 있습니다. 어디까지나 조직의 규모와 팀의 역할, 개발의 단위에 따라 달라지고, 거기에 맞춰 팀빌딩과 R&R을 결정하는 작업이 프로젝트 초기 작업에 이뤄지게 될 겁니다. 추가 문의사항 있으시면 언제든지 글 남겨 주시기 바랍니다. 감사합니다.
- 0
- 2
- 34
Hỏi & Đáp
섹션 2 - 12강 강의 제목 관련 질문있습니다.
안녕하세요, 이도원입니다. 말씀하셨던 부분에 대해서 정확한 위치를 찾지 못해, 우선 제 강의 의도로 말씀드립니다. -.-;Modular Monolithic Architecture와 Layered Architecture 모두 Monolithic 구조입니다. 전통적인 설계 방식으로 기술적 레이어 중심의 방식(Layered Architecture)과 도메인 중심으로 내부를 서비스 단위로 나눈 현대적인 Monolithic 방식의 차이라고 생각됩니다. 기술단위(Controller, Service, Repository 등)로 코드를 분리했던 Layered 방식과 비교해서, 기능별로 모듈화하여 각자 독립된 Layer로 코드를 분리해서 사용하는 방식의 Modular 방식이 말씀드리고자 하는 내용이었습니다. 강의했던 내용 중 어느 부분이었는지 조금 더 말씀해 주실 수 있을까요? 해당 부분을 확인하고 수정해야 할 부분있으면 수정하도록 하겠습니다. 감사합니다.
- 0
- 1
- 24
Hỏi & Đáp
GlobalFilter, LoggingFilter가 동작하지 않습니다.
안녕하세요, 이도원입니다. 올려주신 코드의 일부분 (Default Filter 부분, Global Filter)을 제가 가지고 있는 apigateway-service 프로젝트에 옮겨서 작업 했을 때, 아래와 같이 정상작동 되었습니다. application.yml 파일의 다른 부분, 예를 들어, server-port, eureka, routes 등의 설정은 정상적으로 작동되는대도 필터 부분만 작동되지 않는다면, 사용하신 apigateway-service 프로젝트의 spring boot + spring cloud의 버전을 확인해 보시고, 자바코드를 이용하여 작성된 필터 코드를 등록하는 방법(AbstractGatewayFilterFactory 상속)과 application.yml에 직접 필터를 적용하는 부분을 분리해서 따로따로 확인해 보시고 모든 필터가 작동되지 않는 것인지도 확인해 보시면 좋을 것 같습니다. 지속적인 문제가 발생하신다면, 아래 이메일로 작업하신 apigateway-service 프로젝트 코드를 압축하여 보내주시면, 제쪽에서도 확인해 보도록 하겠습니다. edowon0623@gmail.com감사합니다.
- 0
- 2
- 38
Hỏi & Đáp
학습 방향
안녕하세요, 이도원입니다. 코드를 직접 작성한다는 의미는 해당 코드를 만들 때나, 실무에서 필요한 개발할 하는 경우에, 어딘가 참고할 만한 코드나 Reference가 있어도, 그걸 그대로 Copy & Paste 한다기 보다는 직접 코드를 작성해 본다는 의미입니다. 강의에서는 한줄한줄 입력하는 시간을 가지면, 듣는 수강생분들에 따라, 지룰 할 수도 있어서, 최대한 사용할 수 있는 코드는 제가 작성한 코드를 이용하여 실행했습니다. MSA 관련된 예제나 Spring Boot 애플리케이션 코드에 익숙치 않으시다면, Github에 있는 코드를 참조해서 직접 작성해 보시면 좋을 것 같고, 기본적인 구조와 역할에 대해서 어느정도 파악되셨다면, 처리되는 프로세스와 결과를 확인하고 이해하는데 집중하기 위해 작성 된 코드를 실행해 보시는 쪽도 도움이 되지 않을까 싶습니다. 추가 질문사항 있으시면 다시 글 남겨 주세요.감사합니다.
- 0
- 2
- 25
Hỏi & Đáp
카프카 커넥터 사용 목적 문의
안녕하세요, 이도원입니다. 강의에서 언급한 카프카 커넥트를 사용한 order-service와 DB와의 연결은 사용량은 많은 서비스들이 부하가 걸릴 수 있는 상황에서 DB와의 직접적인 연결 대신, Queue 방식을 이용해서 처리하는 방법에 대해서 설명드렸습니다. 말씀하신대로 여러 order-service가 직접 하나의 DB에 연결되어 작업한다면, 동기화 문제는 해결될 수 있을 수 있으나, order-service에서의 다량 요청에 의해 DB의 병목 현상이 생기거나, DB로부터의 처리 완료 전까지 order-service가 대기해야 하는 시간을 가져야 하는 점을 MQ를 이용해서 처리하는 과정을 설명드렸습니다. 서비스의 사용량, 네트워크의 트래픽, 스케일과의 비용 등을 고려해서 카프카와 카프카 커넥트 사용의 도입을 고려하시면 좋을 것 같습니다. 감사합니다.
- 0
- 2
- 21
Hỏi & Đáp
Kafka Source Connect 버전 에러
안녕하세요 이도원입니다. 최신 Kafka에서는 Kraft 모드를 기본으로 실행되는 것으로 알고 있습니다. 말씀하신 오류는 Confluent 5.5.2 버전 말고, 그 위 버전인 6.1.0 버전으로 테스트해 본 결과 Windows에서도 정상적으로 작동됨을 확인했습니다. 다만 Confluent 최신 버전에 속하는 8.x 버전으로 테스트 시 SLF4j 라이브러리의 호환성 문제로 오류가 발생되었습니다. 우선 Confluent 6.1.0 버전으로 변경하시고 실행해 보시면 좋을 것 같습니다. 감사합니다.
- 0
- 2
- 37
Hỏi & Đáp
서비스 디스커버리 종류
안녕하세요, 이도원입니다. 답변이 늦어 죄송합니다. Eureka는 Spring Cloud 사용에 필요한 필수적인 서비스 디스커버리라기 보단,ㄴ Neflix OSS에서 공개되면서, 사용하기 쉽고, 빠르게 적요해 볼 수 있다는 장점으로 강의에서도 사용하고 있습니다. Eureka보다는 K8s에서의 서비스 디스커버리나, 이번에 강의 업데이트에서도 소개한 Consul도 쉽게 사용해 볼 수 있는 제품입니다. 최근 MSA 구축 프로젝트에서는 당연시 하다시피 K8s와의 조합으로 개발/운영되는 경우가 많습니다. 감사합니다.
- 0
- 2
- 32
Hỏi & Đáp
kafka 강의
안녕하세요, 이도원입니다. 답변이 늦어 죄송합니다. 최근 새로운 프로젝트를 진행하게 되어서, Kafka이후부터의 강의 업데이트가 조금 늦어지고 있네요. 강의는 빠른시일 내에 추가 업데이트를 진행하도록 하겠습니다. 다만, kafka 부분과 그 이후 부분은 작년에 실습 부분에 대한 내용을 업데이트 한 상황이어서, 내용 상으로는 크게 달라지지는 않을 것 같습니다. 그래도, 최신 버전으로의 실습은 다시한번 확인 중에 있습니다. 감사합니다.
- 0
- 2
- 34
Hỏi & Đáp
jdk 버전 17
안녕하세요, 이도원입니다. 답변이 늦어 죄송합니다. JDK 버전은 본 강의에서 크게 중요하지 않으나, Jenkins 구동 시 버전과도 관련이 있을 수 있습니다. 혹시 Jenkins에서 프로젝트 배포 시 문제가 발생한다면, JDK 버전을 낮춰야 할수도 있겠으나, Jenkins 버전을 with JDK 17+ 로 선택하여 설치하실 수도 있습니다.docker hub 사이트에서 jenkins/jenkins:jdk17 로 검색하시면 될 것 같습니다. 추가 문의사항 있으시면 다시 글 남겨 주세요.
- 0
- 2
- 28





![Thumbnail image of the [Phiên bản cũ] Cài đặt IntelliJ IDEA để phát triển ứng dụng web (phiên bản 2020)](https://cdn.inflearn.com/public/courses/324954/course_cover/53636a00-6da7-4661-b3ee-52f2359cd1f3/web-app-intellij-eng-2.png?w=148)
![Thumbnail image of the [Phiên bản sửa đổi 2023-11-27] Phát triển RESTful Web Services bằng Spring Boot 3.x](https://cdn.inflearn.com/public/courses/325065/cover/43d3072a-4402-45a6-b5ee-332f53a4b75f/325065-eng-b.png?w=148)
