2021/11 3

단위 테스트 4. 좋은 단위 테스트의 4대 요소

좋은 단위 테스트에는 다음 4가지 특성이 있다. 회귀 방지 리팩토링 내성 빠른 피드백 유지 보수성 하나씩 살펴보자 회귀 방지 회귀방지란 SW 버그를 방지할 수 있어야 한다는 의미이다. 코드 수정 후 버그가 있었는데 테스트가 통과하면 안된다. 회귀방지를 평가하려면 다음 사항을 고려해야 한다. 테스트 중에 실행되는 코드의 양 코드 복잡도 코드의 도메인 유의성 회귀방지를 극대화하려면 테스트가 가능한 많은 코드를 실행하는 것을 목표로 해야 한다. 리팩토링 내성 리팩토링 내성은 테스트를 실패로 바꾸지 않고 기본 애플리케이션 코드를 리팩토링 할 수 있는지에 대한 척도이다. 여기서 말하는 리팩토링이란 코드의 비기능적 특징을 개선하는 것으로 가독성을 높이고 복잡도를 낮추는 것이다. 예를 들어 메소드 이름을 바꾸거나 코..

대규모 시스템 설계 기초 - 7. 분산 시스템을 위한 유일 ID생성기 설계

분산 시스템에서 사용될 유일 ID 생성기 요구사항 ID는 유일해야 한다 ID는 숫자로만 구성되어야 한다. ID는 64비트로 표현될 수 있는 값이어야 한다. ID는 발급 날짜에 따라 정렬 가능해야 한다. 초당 10,000 개의 ID를 만들 수 있어야 한다. 선택지 다중 마스터 복제 특징 DB의 auto increment 기능을 활용하는 것이다. 다만 다음 ID를 구할 때 1만큼 증가시키지 않고 k 만큼 증가시킨다. 간단하게 적용할 수 있는 방식이고, 한 데이터 센터에서 어느정도 확장도 가능하다 단점 여러 데이터 센터에 걸쳐 규모를 늘리기 어렵다. ID의 유일성은 보장되겠지만, 그 값이 시간 흐름에 맞추어 커지도록 보장할 수는 없다 서버를 추가하거나 삭제할 때도 잘 동작하도록 만들기 어렵다. k가 고정되고 ..

대규모 시스템 설계 기초 - 6. 키-값 저장소 설계

키-값 저장소는 키-값 DB라고도 불리는 비 관계형 DB이다. 키는 유일해야 하며, 키에 매달린 값은 키를 통해서만 접근할 수 있다. 키-값 저장소로 널리 알려진 것으로는 아마존 다이나모, memcached, Redis 같은 것들이 있다. 분산 키-값 저장소 분산 키-값 저장소를 설계하기 전에, 단일 키-값 저장소를 생각해보자. 단일 키-값 저장소는 간단하다. 키-값 쌍 전부를 메모리에 hash table로 저장하면 된다. 또한 2가지 개선책 1) 데이터 압축 2) 자주 쓰이는 데이터만 메모리에 두고 나머지는 디스크에 저장 을 이용하면 조금 더 나은 단일 키-값 저장소를 만들 수 있다. 하지만 한 대 서버로는 부족한 때가 찾아오며 결국은 분산 키-값 저장소를 활용할 수 밖에 없다. 먼저 분산 시스템을 설..