Monolith 분할 하기

모놀리스 분석 대부분 현재 시스템을 잘 설명해주는 문서는 존재하지 않는다. 존재한다고 해도 현행화가 되어 있지 않기에, 오해의 여지가 발생하기도 한다. 상황이 어떻든 최소한 아래의 정보는 수집해야 한다. 애플리케이션의 기능 모듈 및 상호간의 관계 API 및 서비스 인터페이스 모듈에 대한 설명이 있는 논리 다이어그램 시스템 구성을 알 수 있는 물리 다이어그램 데이터 어떤 데이터를 다루는지 알 필요가 있다. 각 모듈별 어떤 데이터를 다루는지 추출을 해야 향후 마이크로서비스로 전환시 경계를 설정할 수 있다. 현황 파악 기능이 이미 외부에 존재하는 경우도 있다. 이 경우 외부 서비스를 재사용...

더보기

모놀리스 애플리케이션을 MSA(마이크로서비스)로 마이그레이션 하는 방법

이쪽 업종에서 일하는 분들이라면 Monolith으로 구현되어 있는 레거시 시스템을 마이크로서비스로 마이그레이션 하고자 하는 Needs가 있을 것이다. 비즈니스를 분석해서 새롭게 만드는 것이 가장 좋은 방법이겠지만, 레거시와 병행해서 개선을 해야 할 상황도 존재하기에 새롭게 만드는 것이 여의치 않은 경우도 많을 것이다. 나도 레거시 시스템을 분석하면서 어떻게 구조 개선을 할 것인지에 대한 고민이 있고, 새롭게 코드를 짜던 기존 코드를 마이그레이션을 하던 가장 유리한 방식을 채택할 계획이다. 위 관점에서 Dzone에 도움이 되는 글이 있길래, 번역을 하였다. 모놀리스 아키텍처 모놀리스 애플리케이션은 복잡도가 ...

더보기

유료로 전환되는 도커 데스크탑 대체하기 (Mac M1)

아래 트윗처럼 도커가 가격 정책을 변경했다. Docker Desktop은 기업내에서 더이상 무료가 아니다. We're updating and extending our product subscriptions! New subscription tiers include Personal, Pro, Team, and Business. Details here: https://t.co/pyDetDKGjC #Docker #Subscriptions pic.twitter.com/Or8l6YoIUO— Docker (@Docker) August 31, 2021 Kubernetes에서 애플리케이션을 실행해야 한다면 데스크탑에 Kubern...

더보기

효율적으로 일하는 방법

일을 하다보면, 공식적으로 Jira에 관리되어 진행하는 Task와 Jira에서 관리하기 애매한 자잘한 Task들이 존재한다. 거기다가 회의 일정등 여러가지 것들을 복합적으로 관리해야 하는 상황에 부딪히게 된다. 오래전부터 나는 GTD(Getting Things Done)를 사용하여 Task를 구성하고 관리하고 있다. 쉽게 말하면 GTD 방법은 추적하고 있는 모든 것(진행중, 대기, 준비등)을 머릿속에서 제거하고 어딘가에 적어 두도록 구성하는 것이다. 어떤 일을 끝냈을 때, 다음에 해야 할 일을 기억하는데 에너지를 쏟을 필요가 없는 것이다. Email 사용 툴 : Outlook 대부분의 사람과 마찬가지로...

더보기

스토리 포인트 바르게 사용하기

스토리 포인트는 팀이 특정 기능을 개발하는데 필요한 노력의 양을 추정하기 위한 편리하고 효율적인 측정 기술이다. 스토리 포인트는 추정치이다. 추정은 예측을 하는 것이고 실제 사실과는 다를 수 있다. 애자일 및 스토리 포인트의 제작자도 정기적인 스프린트 기대치를 충족시키지 못했다고 한다. 경영진은 숫자, 약속, 속도등을 원하기에 스토리 포인트를 이용해 그들을 즐겁게 한거라고 한다. 결국 스토리 포인트를 추가함으로써 경영진을 행복하게 만드는 방법을 찾은 것이다. (믿거나~ 말거나~) 일반적으로 사용자 스토리가 주어지면 스토리의 복잡성을 숫자로 추정한다. 1-5 혹은 1-10 범위로 제한되며 때로는 큰 추정치로 작성...

더보기

Miniservices : MSA에 대한 현실적 대안

마이크로 서비스가 현재 프로덕트를 만들때 가장 인기 있는 트렌드 중 하나라는데 이견이 없습니다. 하지만 모든 상황에서 마이크로 서비스가 적합한지에 대해서는 의문이 듭니다. 제가 블로그에 그동안 많이 언급했던 마이크로 서비스 아키텍처에 대해 마틴 파울러는 다음의 조건을 충족해야 한다고 언급합니다. 독립적으로 배포 가능하고 확장이 가능해야 함 단일 책임 느슨한 결합 하지만, 현실은 만만치 않습니다. Legacy가 있는 경우에는 더욱 그렇습니다. 오늘 소개하려고 하는 미니 서비스는 “마이크로 서비스 그룹이 작은 패턴으로 모인 것”과 같습니다. 위의 그림에 미니 서비스가 중간에 위치한 것을 알 ...

더보기

자율 주행이 시장에 미치는 영향

최근 자율주행 기술력을 확보하고 있는 회사와 함께 자율주행에 관련된 버티컬 서비스를 기획하고 구축하는 일을 진행하고 있다. 자율 주행 기술은 단계별로 분류된다. SAE(미국 자동차 공학회)에서 자동화 레벨을 2016년에 정의했다. 자율 주행 기술 단계 Level 0 (비자동화) 인간이 제어와 주행 책임을 갖는다. Level 1 (운전자 보조) 인간 + 시스템이 차를 제어하며, 주행 책임은 인간이 갖는다. (e.g 차간거리, 조항등 보조) Level 2 (부분 자동화) 인간 + 시스템이 차를 제어하며, 주행 책...

더보기

Serverless vs. Container 선택 가이드

이번 글에서는 서버리스와 컨테이너에 대해서 설명하고자 한다. 일을 하다보니, VM을 이용할 경우 유후 시간이 많을 때 비용이 최적화되지 못하다는 느낌이 많이 들었다. 서버리스는 서버 프로비저닝 및 유지 관리를 추상화하는 클라우드 아키텍처 모델이다. FaaS(Function-as-a-Service)라 불리며, 필요에 따라 코드를 실행하는 개념이고 실행 후 종료된다. 일반적으로 FaaS와 Container를 많이 비교하곤 한다. FaaS와 Container는 몇 가지 공통점이 존재한다. 분산 시스템 및 대규모 애플리케이션 개발에 특화 되어 있고 관리상의 번거로움을 제거하고 애플리케이션과 비즈니스의 가치에 집중하...

더보기