아래 글은 인프콘 2024에서 진행된 지속 성장 가능한 설계를 만들어가는 방법 이라는 발표를 정리한 글입니다.
토스페이먼츠의 김재민님께서 발표 해주셨습니다.
설계를 하지 않는 것이 설계를 잘하는 방법?
설계보다 중요한 것은 '구현'이 핵심입니다.
설계는 구현을 통해 완성되는 것이고, 완벽한 설계란 애초에 불가능합니다.
개념과 격벽을 통한 유연한 설계
소프트웨어 개발에서 중요한 두 가지 개념, 개념과 격벽
- 개념: 소프트웨어를 만들 때 떠오르는 다양한 요소들, 예를 들어 웹툰 서비스에서는 작가, 작품, 결제 등의 개념이 있을 수 있다. 이 개념들을 그룹화하고 그 관계를 잘 설정하는 것이 설계의 핵심.
- 격벽: 개념 간에 무분별한 참조를 막고, 통제된 방식으로만 상호작용할 수 있게 하는 일종의 ‘벽’이다. 격벽을 잘 세워야 소프트웨어가 복잡해지지 않고, 변경 사항에도 쉽게 대응할 수 있다. '벽' 하면 제일 먼저 떠오르는 것이 방화벽일텐데, 방화벽처럼 개념의 접근과 제어가 필요하다.
격벽을 잘 세워서 만들게 되면 하나의 클래스가 수정 되었을 때 연관된 클래스만 수정됩니다.
실제 사례를 통한 이해
대출 서비스 사례를 통해 개념과 격벽을 어떻게 활용했는지 설명해 주셨습니다. 처음에는 '대출'이라는 하나의 큰 개념에 모든 기능을 포함시켰다가, 개념을 세분화하고 격벽을 세워 나가면서 코드와 시스템이 훨씬 더 유연해지고 관리가 쉬워졌습니다.
소프트웨어는 소프트해야 한다
이번 발표에서 가장 기억에 남는 메시지는 "소프트웨어는 소프트해야 한다"는 말입니다. 하드웨어나 건축물처럼 딱딱한 것이 아니라, 소프트웨어는 계속 변화하고 유연하게 대응해야 합니다. 만약 우리가 만든 소프트웨어가 하드웨어처럼 변경이 어려워지면, 그것은 소프트웨어의 본질을 잃어버린 것입니다.
결론
중요한 하지말아야 할 것들
1. 인정하자
- 요구사항은 계속 변한다
- 완벽한 설계란 없다
- software는 soft 해야한다
2. 하지말자
- 요구사항이 완벽해야 설계 가능해요
- 우리 설계에서 그건 개발 못해요
- 설계 해봐야 개발 일정이 나옵니다
3. 상기하자
- 성급한 설계는 모든 것을 망가트린다
- 과도한 설계는 모든 것을 망가트린다
- 설계는 필요한 만큼만 하자
마치며
소프트웨어로 하드웨어를 만들지 말자
발표의 핵심은 개념과 격벽을 세워 구현을 하다 보면 완벽에 가까운 설계로 이어질 수 있다는 것입니다. 요즘 설계와 관련된 많은 책들이 출간되어 설계에 대한 관심이 높아졌고, 저 역시 궁금해서 이번 컨퍼런스 영상을 보게 되었는데, 해당 발표를 듣고 뼈 맞은 느낌이 들었습니다.
특히 기억에 남는 것은 마이클 타이슨의 명언인 "누구나 그럴싸한 계획을 가지고 있다. 처맞기 전까지는." 을 말씀 해주시면서 부딪혀 가면서 구현 해야 한다고 하셨기에 저도 빠른 구현과 함께 더 나은 접근 제어를 고민해야 겠습니다.
발표 내용을 바탕으로 지금 하고 있는 프로젝트에 빨리 바로 적용해 보아야 겠습니다.
'알아두면 좋은 개발 지식 > 컨퍼런스 정리' 카테고리의 다른 글
DDD에 대해서 간단하게 정리하기 (0) | 2024.11.08 |
---|---|
[스프링캠프 2024] Spring AI: LLM에도 봄이 찾아오다 (5) | 2024.11.03 |
[인프콘 2024] 인프런 아키텍처 2024 ~ 2025 (1) | 2024.10.26 |
[KCD Korea 2023] CNCF 및 Kubernetes 컨트리뷰션, 지금 여기서 시작하세요! (2) | 2024.10.13 |
[우아콘 2023] Kafka Streams를 활용한 이벤트 스트림 처리 삽질기 (3) | 2024.10.05 |