julia coding story
[데이터 중심 애플리케이션 설계] 1장 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션 - 유지보수성 (3) 본문
[데이터 중심 애플리케이션 설계] 1장 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션 - 유지보수성 (3)
julia-biolat 2023. 1. 7. 13:37유지보수성
- 소프트웨어 비용의 대부분은 유지보수 비용임
- 버그 수정, 시스템 운영 유지, 장애 조사, 새로운 플랫폼 적응, 새 사용 사례를 위한 변경, 기술 채무 상환, 새로운 기능 추가 등
- 레거시 시스템을 다루지 않기 위해 주의를 기울여야할 소프트웨어 설계 원칙 : 운용성, 단순성, 발전성
1. 운용성(operability) : 운영의 편리함 만들기
- 운영팀이 시스템을 원활하게 운영할 수 있게 쉽게 만들어라
- 자동화 할 것들은 자동화 시켜야함
- 운영팀에서 하는 작업들 :
1) 시스템 상태를 모니터링하고 상태가 좋지 않다면 빠르게 서비스를 복원
2) 시스템 장애, 성능 저하 등의 문제의 원인을 추적
3) 보안 패치를 포함해 소프트웨어와 플랫폼을 최신 상태로 유지
4) 다른 시스템이 서로 어떻게 영향을 주는지 확인해 문제가 생길 수 있는 변경 사항을 손상을 입히기 전에 차단
5) 미래에 발생 가능한 문제를 예측해 문제가 발생하기 전에 해결
6) 배포, 설정 관리 등을 위한 모범 사례와 도구를 마련
7) 애플리케이션을 특정 플랫폼에서 다른 플랫폼으로 이동하는 등 복잡한 유지보수 태스크를 수행
8) 설정 변경으로 생기는 시스템 보안 유지보수
9) 예측 가능한 운영과 안정적인 서비스 환경을 유지하기 위한 절차 정의
10) 개인 인사 이동에도 시스템에 대한 조직의 지식을 보존함
- 동일 반복 task를 쉽게 만듦
1) 좋은 모니터링으로 런타임(runtime) 동작과 시스템의 내부에 대한 가시성 제공
2) 표준 도구를 이용해 자동화와 통합을 위한 우수한 지원을 제공
3) 개별 장비 의존성을 회피, 유지보수를 위해 장비를 내리더라도 시스템 전체에 영향을 주지 않고 계속해서 운영 가능해야함
4) 좋은 문서와 이해하기 쉬운 운영 모델 제공
5) 만족할 만한 기본 동작을 제공하고, 필요할 때 기본값을 다시 정의할 수 있는 자유를 관리자에게 부여
6) 적절하게 자기 회복이 가능할 뿐 아니라 필요에 따라 관리자가 시스템 상태를 수동으로 제어할 수 있게 함
7) 예측 가능하고 예기치 않은 상황을 최소화함
2. 단순성(simplicity) : 복잡도 관리
- 시스템에서 복잡도를 최대한 제거해 새로운 엔지니어가 시스템을 이해하기 쉽게 만들어라
- 우발적 복잡도를 줄인다 -> 추상화 사용
ex) 고수준 프로그래밍 언어는 기계언어, CPU 레지스터, 시스템 호출을 숨긴 추상화이다. SQL은 디스크에 기록하고 메모리에 저장한 복잡한 데이터 구조와 다른 클라이언트의 동시 요청과 고장 후 불일치를 숨긴 추상화다.
- 좋은 추상화를 찾기 매우 어려움
3. 발전성(evolvability) : 변화를 쉽게 만들기
- 엔지니어가 이후에 시스템을 쉽게 변경 할 수 있게 하라. 그래야 요구사항 변경 같은 예기치 않은 사용 사례를 적용하기가 쉽다. 이 속성은 유연성(extensibility), 수정 가능성(modifiability), 적응성(plasticity) 으로 알려져 있다.
- 애자일 작업 패턴은 변화에 적응하기 위한 프레임워크를 제공함
- 애자일 커뮤니티는 테스트 주도 개발과 리팩토링 같이 자주 변화하는 환경에서 소프트웨어를 개발할 때 도움이 되는 기술 도구와 패턴을 개발하고 있음
1장 Key Word 정리
- 애플리케이션이 유용하려면 다양한 요구사항(기능적 요구 사항, 비기능적 요구사항)을 충족시켜야함.
* 기능적 요구 사항 : 여러 방법으로 데이터를 저장하고 조회하고 검색하고 검색하고 처리하게끔 허용하는 작업과 같이 해야하는 일
* 비기능적 요구사항 : 보안, 신뢰성, 법규 준수, 확장성, 호환성, 유지보수성과 같은 일반적인 속성
- 신뢰성
- 확장성
- 유지보수성
*레거시 시스템 : 낡은 기술이나 방법론, 컴퓨터 시스템, 소프트웨어 등을 말함
'소프트웨어 > Database' 카테고리의 다른 글
[데이터 중심 애플리케이션 설계] 1장 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션 - 확장성 (2) (0) | 2023.01.07 |
---|---|
[데이터 중심 애플리케이션 설계] 1장 신뢰할 수 있고 확장 가능하며 유지보수하기 쉬운 애플리케이션 - 신뢰성 (1) (0) | 2023.01.07 |