데이터 공부/데이터베이스 & SQL

01. 신뢰할 수 있고 확장 가능하며, 유지보수하기 쉬운 애플리케이션

한소희DE 2022. 5. 10. 23:28

 

지난주부터, '데이터 중심 애플리케이션 설계'라는 책을 스터디하기 시작했다. 책을 읽으며, 중요하다고 생각하는 부분에 대해 짧게 요약정리(+약간의 개인적 생각이 들어간...) 해보고자 한다. 이번 포스팅에서는 첫 챕터인,  "01. 신뢰할 수 있고 확장 가능하며 유지 보수하기 쉬운 애플리케이션" 부분을 다뤄 보았다.

 

 

 

목차

1. 신뢰성

2. 확장성

3. 유지보수성

 

 


 

 

 

01. 신뢰성

신뢰성이란, 결함이 발생해도 시스템이 올바르게 동작하게 만드는 것을 말한다.

 

결함률이 0이 되도록 설계하는 것은 불가능하다. 오히려, 결함이 발생하더라도 결함으로 인한 장애가 발생하지 않도록 내결함성을 갖추게 설계하는 것이 좋다. (보안 이슈는 제외)

내결함성을 갖추도록 설계하면, 특정 유형의 결함이 발생하였을 경우 사용자에게 결함을 숨길 수 있다.

 

내결함성을 잘 갖춘 설계인지 확인하는 방법?
지속적인 확인 혹은 모니터링 시스템 구축을 통해, 내결함성을 주기적으로 검증해주어야 한다.
소프트웨어 결함을 발생하는 버그의 경우, 특정 상황에 의해 발생하기 전까지 수면 위로 떠오르지 않을 가능성이 높기 때문에, 모니터링 시스템이 필요하다.

 

 


 

 

02. 확장성

 

확장성이란, 부하가 증가해도 좋은 성능을 유지할 수 있는 것을 말한다.

 

따라서, 어플리케이션 설계 시 확장성을 고려하기 위해 아래와 같은 고민이 필요하다.

  • 시스템이 특정 방식으로 커졌을 때, 이를 대처하기 위한 선택지가 있는가?
  • 추가 부하를 다루기 위해 리소스를 투입 가능한가? (가능하다면, 어떻게 해야 하는가?)

 

 

2-1. 스케일업과 스케일아웃

스케일업이란, 용량 확장이라도고도 하며 좀 더 강력한 장비로 이동하는 것을 말한다.

스케일 아웃이란, 다수의 낮은 사양 장비에 부하를 분산하는 것을 말한다.

 

고사양 장비는 비싸고 & 저사양 장비 여러 대를 설치하는 것은 때로 많은 복잡도를 발생할 수 있다.

따라서, ※서비스의 주요 동작에 따라 적절한 조합이 필요하다.

 

※서비스의 주요 동작에 따라 최적 솔루션이 다른 이유

예를 들어 각 크기가 1kb인 초당 100,000건의 요청을 처리하도록 설계하는 것과 & 각 크기가 2GB인 분당 3건의 요청을 처리하기 위해 설계한 시스템은 서로 같은 처리량이지만 설계 방식은 매우 다르다.

따라서 설계할 서비스의 주요 동작을 잘 파악하고 & 그에 맞게 스케일업과 스케일아웃을 조절해야 한다.

 

 


 

03. 유지보수성

유지보수성이란, 말 그대로 어플리케이션 유지보수를 추후 최소화하도록 설계하는 것을 말한다.

 

소프트웨어의 대부분의 비용은 초기 개발이 아니라 지속해서 이어지는 유지보수가 차지한다. 버그가 발생하거나, 운영을 유지하거나, 혹은 서비스가 변경되거나 하는 것들이 이 유지보수에 해당한다.

유지보수성을 고려하면, 중요하지 않거나 반복적인 태스크를 개선할 수 있으므로, 운영팀이 고부가가치 활동에 노력을 집중할 수 있게 된다는 장점이 있다.

 

 

 

유지보수를 최소화하기 위해서는 다음과 같은 원칙이 따른다.

 

3-1. 운용성

운영팀이 시스템을 원활하게 운영할 수 있도록 "쉽게" & "헬스체크 및 관리를 효율적으로 할 수 있게" 만들어야 한다.

 

3-2. 단순성

불필요하거나 우발적인 복잡도를 최소화해, 새로운 엔지니어가 와도 시스템을 이해하기 쉽게 만들어야 한다.

즉, 재사용이 가능하며 간단하고 이해하기 쉬워야 한다. 이는 시스템 구축의 핵심 목표다. (간결할수록, 운용도 수정도 모두 쉽기 때문이다.)

 

3-3. 발전성

추후 변경 혹은 개선을 할 때도 쉬울 수 있도록 만들어야 한다.

왜냐하면 시스템의 요구사항은 끊임없이 변할 가능성이 크며, 서비스가 성장하면서 아키텍처 변화가 잇따를 수 있기 때문이다. 따라서 유연하게 수정이 가능하도록 설계하는 방법을 초기에 고려하는 것이 중요하다.

 

 

 

 


 

[1주 차 스터디 후기]

책의 본 내용에 들어가기 앞서, 데이터 중심의 애플리케이션 설계를 위한 마인드셋을 할 수 있어서 좋았던 챕터였다. 

 

앞으로 매주 화요일마다 스터디를 하게 됐다. 해당 스터디는 지정된 시간에 함께 밋으로 모여 지정된 챕터를 삼색 볼펜 리딩 방법을 이용해 읽고, 중요한 부분을 함께 요약하는 방식으로 진행된다. 확실히 혼자 읽으려고 했으면 엄두가 안났을 텐데, 함께 모여 읽으니 의지가 더욱 생기는 것 같다.

특히 처음 접해본 삼색 볼펜 리딩 방법은, 생각보다 흥미롭고 나름 효과적인 것 같다. (지금까지 찾은 장점은, 나중에 복습하기가 훨씬 수월하다는 것. 추가적인 장점을 알게 되면 나중 후기에 남기도록 하겠다.)

그럼 삼색볼펜 방법에 대한 포스팅을 소개하며, 포스팅을 마무리하도록 하겠다!

 

 

 

스터디 모임, 삼색볼펜법으로 하자~

직장인들은 바쁩니다. 회사일 하나도 바쁜데, 자녀가 있는 직장인이라면 가정에 돌아가서도 시간을 내기 정말 힘들죠. 집에 돌아와 방안에 들어가 공부만 한다면 좋아할 가족이 있을까요? 그래

humbleagilecoach.tistory.com