brunch

You can make anything
by writing

C.S.Lewis

by Younggi Seo Mar 02. 2020

해커에게 필요한 웹 구조 해부하기 14

Node.js를 이용한 채팅 박스 만들기 < DDD개념 환기




앞선 섹션에서 말했듯이 이번 섹션에서는 메인 화면과 같은 'Chattrbox'라는 Node를 이용해서 실시간으로 대화를 나눌 수 있는 응용프로그램을 만들어보려고 하였다. 하지만 뭐든지 과유불급이라고 하지 않았던가. 'MIT 챌린저'라고 MIT의 공개된 학사 학위의 컴퓨터 과학(Computer Science) 과정을 1년 만에 스스로 마친 Scott Young이라는 젊은이가 쓴『울트라 러닝, 세계 0.1%가 지식을 얻는 비밀』라는 저서에서 언급한 말이 두 눈 앞에 아른거려, 재미 붙인 프런트 앱 코딩 실습은 여기서 마치겠다. 자바스크립트 기본기를 해당 사이트​에서 더 닦고(영어 강좌다), 학습에서의 간격 효과를 누리기 위해 약 2주 뒤에 다시 지금까지 했었던 웹 프런트 개발을 예제 소스를 보지 않고 시도해 보려고 한다. 그리고 애플리케이션 보안 취약점 분석에 들어가겠다. 아, Scott이 말한 구절은 다음과 같다.



위대한 프로그래머와 별 볼 일 없는 프로그래머를 가르는 차이는 대개 이들이 풀 수 있는 문제의 범위가 아니다. 위대한 프로그래머들은 문제를 푸는 수십 가지 방법을 알고 있으며 각 상황에서 최선의 방법을 선택할 수 있다. 이런 폭넓은 경험을 갖추기 위해서는 처음에는 어느 정도 지식에 수동적으로 노출되어야 하며, 그렇게 한 후에 인출 연습에서 이득을 얻을 수 있다.



즉 이미 갖은 사례로 정형화된 소스를 보지 않고도 자신이 같은 순서의 알고리즘에 맞게 코딩할 수 있어야 코더가 아닌, 개발자라고 할 수 있다. 그리고 채팅 프로그램은 아래와 같은 모듈 간의 로직의 순서로 이루어진다. 필자는 보안 아키텍트가 본인의 커리어에서 지향하는 끝점이기 때문에 사실은 소스 구현보다는 아래와 같은 로직 설계를 도메인(분야) 별로 볼 수 있는 안목이 더 필요할지도 모르겠다. 어차피 지금부터 아무리 애써도 나보다 개발은 더욱 잘하는 인력이 넘치는 게(세계 시장으로) 현실이기에, 그들보다 차별화를 기할 수 있는 것을 개발하는 것이 급선무이다. 다음 섹션부터는 DDD(Domain Driven-Development)가 무엇인지 해당 개념에 대해서 짚어보려고 한다.


도식 1.  클라이언트단(웹브라우저)에 자바스크립트를 실행시킨 것과 노드를 경유한 것과의 차이 (JavaSript running in broswer VS via Node)




도식 2. Chattrbox 앱 네트워크 다이어그램 (Network diagram of the Chattrbox application)



도식 3. 다중으로 요청을 처리하는 Ajax와 단일 웹소켓 접속의 비교 (Multiple Ajax requests VS a single WebSockets connection)



도식 4. Chattrbox applicaiton modules



Reference book included in:

Ultralearning. (n.d.). Retrieved from https://www.scotthyoung.com/blog/ultralearning/

매거진의 이전글 해커에게 필요한 웹 구조 해부하기 13
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari