노트차세대와 고도화
개발 문화#architecture · 연결된 개념 9개
쉽게 말하면
차세대와 고도화는 낡은 집을 허물고 새로 짓느냐, 뼈대는 두고 리모델링하느냐의 차이예요. 새로 짓는 쪽이 시원해 보이지만, 집에 쌓인 사정을 처음부터 다시 챙겨야 해서 생각보다 위험해요.
비유가 깨지는 곳 집과 달리 시스템은 새로 짓는 동안에도 계속 돌아가야 하고, 사용자는 문서에 없는 동작에도 기대요. 그래서 새 구조를 옆에 만들어 조금씩 옮기는 길도 있고, 고도화도 구조 정리 없이 쌓으면 기술 부채가 커져요.
국내 IT(Information Technology) 프로젝트에서 자주 쓰는 두 용어다.
- 차세대: 기존 시스템을 완전히 새 시스템으로 바꾼다. 아키텍처, 기술 스택, 데이터 구조를 처음부터 다시 설계한다. 메인프레임을 클라우드 기반으로 전면 전환하는 식이다
- 고도화: 기존 시스템의 골격은 두고 기능을 더하거나 성능과 UI(User Interface)를 개선한다
비유하면 차세대는 집을 허물고 새로 짓는 것, 고도화는 리모델링이다.
고를 때 생각할 점
- 전면 재작성(Big Rewrite)은 매력적이지만 위험하다. 기존 시스템에 쌓인 예외 처리와 업무 규칙을 다시 발견해야 하고, 그동안 두 시스템을 함께 유지해야 한다. 잘 돌아가는 복잡한 시스템은 대개 작고 단순한 시스템에서 자라났다 → 골의 법칙
- 사용자는 문서화되지 않은 동작에도 기대고 있다. 새 시스템이 그 동작을 바꾸면 깨지는 곳이 생긴다 → 하이럼의 법칙
- 한꺼번에 바꾸는 대신, 새 구조를 옆에 만들고 조금씩 옮기는 방법이 있다 → 병렬 수정 (팽창-수축)
- 고도화도 구조를 손보지 않고 기능만 쌓으면 기술 부채가 커진다. 바꾸기 전에 구조를 정리하는 정리(Tidying)과 리팩터링을 함께 한다
작은 것을 먼저 만들어 배우고 큰 것으로 키우는 4인치 반사경 먼저 (톰슨의 법칙)도 재작성 범위를 정할 때 참고할 만하다.
연결된 개념
이 노트를 가리키는 문서
뜻이 가까운 노트
- 디자인 패턴
반복해서 나타나는 설계 문제에 대한 검증된 해결 구조와 그 이름. 복사해 쓰는 완성 코드가 아니라 객체들이 협력하는 방식을 설명하는 어휘다. 1994년 이른바 GoF(Gang of Four, 네 명의 저자)의 책 『Design Patterns: Elements of Reusable Object-Oriented Software』가 23개 패턴을 정리하며 널리 퍼졌다.
- 소프트웨어 공학의 법칙들
소프트웨어 시스템과 팀, 의사결정에 반복해서 나타나는 경험칙들을 모아 부르는 말. 법칙이라고 부르지만 대부분 증명된 정리가 아니라 관찰과 격언이다. 판단할 때 떠올릴 이름표로 쓴다. 따로 노트를 둔 것은 링크로, 나머지는 한 줄로 적었다.
- 결합도
한 요소를 바꿀 때 다른 요소도 바꿔야 하는 관계. 결합도는 언제나 "어떤 변경에 대해" 결합되어 있는지를 함께 말해야 의미가 있다. 같은 두 모듈도 어떤 변경에는 묶여 있고 어떤 변경에는 독립적일 수 있다.
- 구조와 동작, 옵션의 가치
켄트 벡이 정리 시점을 판단하려고 꺼내는 경제학 틀. 소프트웨어는 두 가지 가치를 만든다. 오늘 하는 일(동작)과, 내일 새로 할 수 있게 되는 일(옵션)이다. 구조는 동작을 바꾸지 않지만 옵션을 만든다.
- 집단 코드 소유
코드의 주인을 개인으로 두지 않고 팀 전체가 코드베이스 전체를 소유해, 누구나 필요한 곳을 고칠 수 있게 하는 XP 실천법.