소프트웨어 아키텍트의 역할

처음 IT 분야에서 일을 시작했을 때 소프트웨어 설계자라는 직책이 나의 관심을 끌었었다. 소프트웨어 혹은 애플리케이션 아키텍트라는 이름이 아름답고 우아하게 보였다. 그리고 아키텍트가 되기로 마음먹었었다. 아키텍트가 되기 위해서는 코딩, 아키텍처, 패턴, 커뮤니케이션 스킬 등 다양한 주제를 깊이 있게 공부하고 경험해야 했다. 나에게 아키텍트가 된다는 것은 훌륭한 개발자가 되고 아키텍처에 대해서 최대한 아는 것을 의미했기 때문이다. 우리는 일반적으로 수석 개발자나 우수한 개발자가 자신은 아키텍트라고 말하는 것을 본다. “Role of the Software Architect”에서 Simon Brown은 소프트웨어...

더보기

애플리케이션 현대화로 가는 길

오늘은 왜 애플리케이션을 현대화 해야 하는지 얘기하려 한다. 오래된 기술 어느 회사나 오래된 기술로 만들어진 시스템을 가지고 있을 것이다. 이것과 관련해서 흔히들 “잘 작동하면 만지지 마세요.”라고 얘기한다. 변경 사항이 없을 경우에는 맞는 말이다. 잘 동작되고 있는데 굳이 변경할 필요는 없기 때문이다. 하지만, 문제가 발생하거나 변경을 해야 할 경우에는 어떻게 해야 할까? 오래된 기술을 알고 있는 사람을 고용하기는 매우 어려울 것이다. 10~20년전에 이 코드를 작성한 사람들은 아마 은퇴를 했을 것이고, 젊은 개발자들은 이 기술을 배우고 싶어하지 않을 것이다. 억지로 하라고 하면 이탈로 이어질 것이고, 좋은 개...

더보기

레거시 시스템 구조개선 고민

하나의 거대한 모놀리스로 되어 있는 오래된 시스템을 구조 개선을 하기 위해 분석중이다. 분석을 시작하기 전에는 마이크로서비스에 대한 언급이 많았다. 마이크로서비스는 훌륭한 방법이긴 하다. 모듈식이며 확장 가능하고 내결함성도 좋다. 이름만 들어도 익히 알고 있는 유명한 곳에서 이 모델을 사용하여 큰 성공을 거두었기에 마이크로서비스로 아키텍처를 잡는 것이 훌륭하게 보일 수 있다. 그러나 마이크로서비스로 성공한 대부분의 기업은 처음부터 마이크로서비스로 시작하진 않았다. 트위터나 에어비앤비 같은 경우는 마이크로서비스로 전환을 했지만, 현재 복잡성과 대면을 하고 있다. 마이크로서비스를 사용해서 성공한 회사도 최선의 방법...

더보기

기술 부채의 유형과 관리 방법

기술 부채란? 기술 부채는 Ward Cunningham이 1992년도에 만든 표현이다. 오늘날 기술 부채 및 코드 부채는 개발 팀이 애플리케이션을 개발 시 빠른 코드를 작성하는 것을 선택할 때 발생한다. (일정에 쫓겨서 개발) 신속한 코드 전달은 프로젝트 완료일을 맞추는데 도움이 되고 이에 대한 기술 부채를 감내한다고 했을 때, 비지니스 관점에서는 문제가 없어 보일 순 있지만, 향후 부정적인 결과를 초래할 수 도 있다. 기술 부채를 발생시키기로 결정했다면 부정적인 결과가 생기는걸 고려해야 한다. 기술 부채는 처리하기가 복잡하고 특정 지표와 연결되어 있지 않다. 기술 부채를 해결하는데 필요한 정확한 자원을 추정하는...

더보기

Restful vs gRPC vs GraphQL

얼마전 프로젝트 진행 시, RESTful의 엔드포인트에 대해서 문제가 생겼었다. 구현상에 문제는 없지만 Addressability를 보장해야 하는 DX관점에서의 문제였다. 지금이야 REST로 API를 만들어서 제공하지만, 상황에 따라 gRPC 혹은 GraphQL을 사용해야 할 경우도 생기기에 각 표준에 대해서 정리하고자 한다. 통신 방식의 비교 이미지 출처: https://www.sensedia.com/post/apis-rest-graphql-or-grpc-who-wins-this-game 기술별 특성 비교 이미지 출처: https://www.sensedia.com/post/apis-rest-graph...

더보기

개발자 경험(Developer Experience)과 사용자 경험(User Experience)

서비스를 기획할 때는 UX(User Experience)관점에서 진행되는 경우가 많다. 오늘은 DX(Developer Experience)에 대해서 언급하고자 한다. 내가 하는 일이 개발자를 위한 제품을 만드는 것은 아니지만, 내부적으로 개발을 하게되면 어느 순간 다른 개발자가 조인하여 구현된 코드를 인계받아 업무를 진행하는 사례도 많기 때문에 DX 관점에서 개발을 진행할 필요성이 있어 보였다. 둘은 비슷해 보일 수 있다. DX에 대해서 정의하자면 “개발자를 위한 사용자 경험”이 아니다. DX는 기술 언어 및 도구를 이용해 사용자에 초점을 맞춘 UX의 확장이다. DX도 UX의 핵심 원칙을 따르지만 개발자가 기술...

더보기

PL/SQL에서 Java로 자동 변환 도구가 필요하지 않은 이유

오래된 어르신 시스템을 구조개선 준비 중이다. 예전에는 비즈니스 로직 대부분을 PL/SQL로 했는지, 자바단에는 비즈니스 로직이 거의 없는 상황이다. PL/SQL을 Java로 자동 변환을 해주는 Converting Tool이 있지 않을까? 하는 마음에 찾아서 테스트를 해보았다. (사람은 게으르다.) 솔루션 벤더사의 트릭에 속은 느낌이다. 대부분 업체들은 “PL/SQL Convert to Java” 문장으로 마케팅을 하고 있었다. 하지만, 지금 시점에 일반 Java만 사용하는 곳이 없기 때문에 일반 Java로 마이그레이션을 할 필요가 없는 것이었다. ORM으로의 마이그레이션 필요한 것이었다. 왜 PL/SQL을 마...

더보기

Monolith 잘라 내기

현실에서 마이크로 서비스 관련 설계를 진행하다 보면, 적합하지 않은 상황이 발생하곤 한다. 이런 상황에 대해서 언급하는 글(https://dzone.com/articles/chopping-the-monolith-the-demo)을 발견해서 내용을 작성한다. 저자는 전자 상거래 영역에서 몇 년간 일을 했다고 한다. 전자 상거래의 상당 부분이 가격 책정에 전념하고 있고 가격 책정 규칙은 매우 자주 변경된다고 한다. 특정 제품의 재고가 너무 많음 시즌 종료: 새 상품에 대한 물류 센터 공간을 확보해야 하기에, 가격을 낮춰서 판매한다. 연구에 따르면 마진을 낮추면 제품 판매가 증가하여 전반적으로 더 많은 수...

더보기