본문으로 바로가기

한 주간 종일 과정으로 진행한 'KOSA - 서버프로그램 구현' 강의를 완료했다.

특히, 개발자 후배들을 대상으로 진행한 것이기에 좀 더 구체적인 사례와 실습을 담기 위해 노력한 한주였다.
실습을 늘려 진행하니 강의는 좀 여유(?)로운 듯 하지만, 문제없이 준비하려니 과정은 더 힘들었다. @.@


<강의 전 한 컷 - 필요한 것을 미리 준비해 놓고 참석자들을 기다린다>

참석하신 분들과 이야기를 나누어 보니, 'JAVA, Spring, JavaScript 등을 이용하여 서버사이드 개발'을 하고 계신다.

한 주간의 강의를 어떻게 풀어갈까?
첫날에 상황 파악을 하고 강의주제를 빠르게 보완하여 결정한다.

프로그래밍 언어에 대한 설명은 꼭 알아야 할 것(예: 비동기 호출 / Promise 등)을 중심으로 최소화하고,
서버 프로그램 구현을 위해 필요한 원리와 이론, 특히 '마이크로서비스 아키텍처를 중심으로 한 설계/구현/배치/운영'에 대한 설명과 실습에 집중하기로 하였다.


소프트웨어 공학(요구사항과 개발방법론), 테스트(품질), 네트워크(HTTP) 및 운영체제(리눅스)에 대한 주요 이론을 빠르게(?) 정리하여 확인하고, 바로 실습에 들어간다.

실습은 'MSA(Micro Service Architecture)를 지향한 소프트웨어를 설계 → TDD(Test Driven Development)을 이용한 개발 → 서비스 인프라 구축 → 개발코드 배치 → 테스트 및 테스트 자동화'의 시나리오를 기반으로 한다.

이론과 실습을 병행하다 보니, 앞/뒤 순서가 바뀐 경우도 있지만 '전체적으로 연관성을 유지'하기 위해 '현재의 우리 위치를 확인하고 앞/뒤 상황을 정리'하면서 한 걸음씩 나아갔다.


AWS와 같은 클라우드 서비스를 이용할 상황이 못 되어 아쉬운데로 VirtualBox에 CentOS를 설치하여 기본 환경을 구성하였다.

<VirtualBox 가상환경에 포트포워딩을 설정 - 다른 것은 일반적인 클라우드 환경과 크게 다르지 않다>

서비스의 배치와 연동을 실습하기 위하여 ngnix가 API Gateway(Proxy)의 역할을 담당하도록 구성하였고, node.js를 이용하여 기본 서비스를 개발하였다.
이후 Docker 컨테이터를 추가하여 여러 개의 서비스가 함께 동작하고 연동할 수 있음을 실습하고 확인하였다.

특히, 이러한 인프라를 처음 구성하고 Docker를 처음 사용하는 후배들에게 '별것 아니에요~ 하면 돼요~'라는 자신감을 심어 주고 싶었다. ^^~

<대부분 CLI상에서 command로 실습을 진행하다 보니 그럴듯한 캡쳐화면이 없다. @.@>


테스트와 테스트 자동화는 TTA 강의 경험을 살려 Selenium 실습을 추가하고, Jenkins를 이용한 자동화 구축, Apache jMeter를 이용한 성능 테스트 방법을 실습하였다.

<참~ 좋은데, 뭐라 표현할 방법이 없는 도구들... ^^>

Apache jMeter의 UI가 변경된 것을 알고 (너무 오랜만에 새것을 다운로드 받았다 @.@) 잠시 당황~~
다행히 큰 차이가 없다. ㅋ~

<jMeter의 UI가 바뀌었네~ 그래도 기능은 유사하다~>


금요일, 마지막 날이 되니 여러 가지 생각이 든다.

그중 대부분 개발에 익숙하신 분들이란 이유로 '코딩을 너무 간단히 한 것'은 아닌가? 하는 것과 '보다 솔루션다운 프로그램을 구현'해 보았으면 더 좋았을 텐데 하는 아쉬움이 남는다.

한편으론 참석하신 분 들 중 '여러가지 익숙하지 않은 분들도 있을 텐데, 너무 빨리 진행했나?' 하는 생각도 든다.

아마도 몇번은 더 진행할 강의일 테니, 이후엔 좀 더 보완해서 더 잘해 보기로 한다.
특히, '하나의 솔루션을 주제로 하여 쭈~욱 완성해 보는 프로젝트 스타일의 강의'를 기획하여 진행해 보아야겠다.


강의를 하면서, 회사의 개발 품질과 인프라에 대해서 회고하게 된다.
다른 이들에게 설명하고 강조하는 것에 앞서 내가 속한 회사의 인프라와 개발 품질도 잘 챙겨야 할 텐데, 한편 부끄러운 맘이다. 

조금 더 노력해 보자.