grep

Backend

TOAST FORWARD - Spring Framework Core 후기

NHN

2019년 7월 31일

원문에서 보기 ↗

NHN에서 'TOAST FORWARD'라는 이름으로 우수한 내부의 기술교육 콘텐츠를 외부에 공개하고 있다는 것, 알고 계셨나요?

지난 7월 11일에 진행한 '하루에 정리하는 Spring Framework Core' 에 참관하고 왔습니다. '하루에 정리하는 Spring Framework Core'라니, 이번 교육의 발표자이신 김병부 님의 든든한 모습만큼이나 무지무지 기대가 되는 주제였는데요.

1.png

요리를 사랑하는 개발자라는 김병부 님. 포스는 이미 마스터 셰프.

김병부 님은 이 교육으로 NHN 내부 교육 평가에서 무려 10점 만점에 10점을 받았던 분이라고 하시네요.

Spring Framework의 특징

교육 내용은 놀랍게도 처음부터 Spring Framework를 바로 다루는 대신에,친절하게도 우선 Framework가 무엇인지, Library와는 어떻게 다른지 같은 내용부터 차근차근 진행되었습니다. 그리고 Spring Framework의 특징, 각각의 모듈들에 대한 구성, Spring 서브 프로젝트들에 대한 설명으로 내용이 이어졌습니다. 이어서 Spring Framework의 핵심은 POJO(Plain Old Java Object)이며, 이를 위한 세 가지 기술 - IoC/DI, PSA, AOP - 에 대해 자세히 설명하기 시작하였습니다.

이후 교육에서 다루었던 주요 내용은 대략 아래와 같았습니다.

IoC/DI

지금까지 설명한 IoC/DI 개념에 대해 코드로 데모를 보여주었습니다.

IoC/DI Container, Spring Bean

ApplicationContext

Spring Bean 설정

Java Config에서 Bean 설정하는 방법

JavaConfig에서 Spring Bean 주입하는 방법

@ComponentScan + Stereotype Annotation

Spring Bean에 대한 다양한 설정에 대해서도 여러 가지 데모를 통해 코드로 이해하기 쉽게 설명해주셨습니다.

Spring Bean Scope

Bean Lifecycle handling

Bean Lifecycle handling 방법 각각에 대해서도 데모를 진행했었습니다.

Environment 추상화

여러 Profile을 설정하고 특정 Profile에 특정 Bean을 설정하는 방법 등에 대해서도 다양한 데모를 보여주셨습니다.

PSA (Portable Service Abstraction)

서비스 추상화의 예로서 트랜잭션 서비스 추상화를 보여주었으며, 트랜잭션 서비스 추상화를 트랜잭션 적용 이전 상태부터 데모를 통해 상세히 설명해주었고, 스프링에서 어떻게 트랜잭션 서비스 추상화를 구현하고 있는지, 이러한 트랜잭션 서비스 추상화가 데이터 액세스 기술의 변경에도 어떻게 유지될 수 있는지 단계별로 데모를 통해 깊이 있게 잘 설명해주었습니다.

AOP (Aspect-Oriented Programming)

끝으로 AOP에 대해서는 개념과 용법, 그리고 개인적인 노하우까지 꼼꼼히 설명해주었습니다.

개인적인 소감

김병부 님처럼 꼼꼼하신 강사분이 탄탄한 이론에 다양한 예제의 데모까지 더해 Spring Framework Core에 대한 깊이 있는 내용을 밀도 있게 전해줘서 너무나도 만족스러운 교육이었습니다.

교육을 신청하신 45명 중 단 한 분도 빠짐없이 모두 참석해주셨고 한 분 한 분 모두 매시간 교육에 집중하시는 놀라운 모습을 보여주었습니다.

2.png

거기에다 교육 환경도 시원하고 쾌적한 강의장에 샌드위치는 물론이고 커피에 탄산음료에 물, 과자, 사탕 등등 먹고 마실 게 넘쳐나는 데다 경품 이벤트까지 해서 상품마저 하나씩 안겨주는 정말이지 최적의(?) 환경이라 아니할 수 없었습니다.

4.png

NHN에서는 'TOAST FORWARD'를 통해 매월 새롭고 다양한 주제로 여러 개발자분들을 만나 뵙고 있습니다. 다음 달에는 게임 주제를 준비했다고 합니다. 계속해서 발전하는 'TOAST FORWARD'를 기대하셔도 좋을 것 같습니다.

5.png