개발(ETC) 3

애자일(Agile) 이란

애자일(Agile) 이란 흔히 개발 ‘방법론' 혹은 ‘프로세스' 라고 얘기하지만 와닿지 않는다. ‘일하는 방식' 정도로 생각하자. 기존 소프트웨어 개발을 할 때 사용하던 전통적인 방식 (구닥다리 방식) 이 아닌 여러 거장들이 ‘유연하게 일하는 방식’ 을 정의한 것이다. 실제 애자일이라는 용어 자체가 ‘기만한', ‘재빠른', ‘민첩한' 이라는 뜻을 가지고 있다. 기존 전통적인 방식 (구닥다리 방식) 전통적인 방식 이라면, 정확히 어떤 방식인지 ‘책을 집필하고 출판하는 과정’ 을 예시로 설명해보겠다. 저자가 기술 서적을 쓰기로 마음 먹음 출판사에 저자의 기획안을 제출 출판사 는 책 출판을 결정 저자와 출판사는 계약을 하고 저자는 집필 시작 탈고일이 6개월 이라 가정, 출판사는 프로그레스를 중간 중간 점검함 ..

개발(ETC) 2022.07.15

대용량 웹 서비스를 위한 마이크로 서비스 아키텍쳐(MSA)의 이해

마이크로 서비스 아키텍쳐 (이하 MSA) 는 최근 웹 기반의 분산 시스템의 디자인에 많이 반영되고 있는 아키텍쳐 스타일이다. 특정 사람이 정의한 아키텍쳐가 아니라 분산 웹 시스템의 구조가 유사한 구조로 설계 되면서 개념적으로만 존재하던 개념이다. 얼마 전 마틴파울러(Martin folwer) 가 MSA 에 대한 개념을 글로 정리하여 개념을 정립 시키는데 일조하였다. 이 글에서는 대규모 분산 웹 시스템의 아케텍쳐 스타일로 주목 받고 있는 MSA 에 대한 개념에 대해서 알아보도록 하자. 모노리틱 아키텍쳐 (Monolithic Architecture) MSA 를 이해하려면 먼저 모노리틱 아키텍쳐 스타일에 대해서 이해해야 한다. (Monolithic: 단단히 짜여 하나로 되어있는, 하나로 된 거대한 덩어리) 모..

개발(ETC) 2022.07.01

Blocking, Non-blocking, Sync, Async

해당 개념을 이해하기 위해서는 다음의 두 용어를 짚고 넘어가야 한다. 제어권 제어권은 자신(함수)의 코드를 실행할 권리 같은 것이다. 제어권을 가진 함수는 자신의 코드를 끝까지 실행한 후, 자신을 호출한 함수에게 돌려준다. 결과값을 기다린다는 것 A 함수에서 B 함수를 호출했을 때, A 함수가 B 함수의 결과값을 기다리느냐의 여부를 의미한다. Blocking(블로킹) 과 Non-blocking(논블로킹) 블로킹과 논블로킹은 A 함수가 B 함수를 호출했을 때, 제어권을 어떻게 처리하느냐에 따라 달라진다. 1) 블로킹 A 함수가 B 함수를 호출하면 제어권을 B 함수에 넘겨준다. A함수가 B함수를 호출하면 B에게 제어권을 넘긴다. 제어권을 넘겨받은 B는 열심히 함수를 실행한다. A는 B에게 제어권을 넘겨주었..

개발(ETC) 2022.05.09