이 문장을 해석해보자.
→
애플리케이션을 확장할 때, 애플리케이션의 기능에 문제가 발생하지 않도록 주의해야 합니다. 예를 들어, 사용자의 요청을 처리하는 데 필요한 데이터가 한 대의 서버에만 존재한다면, 그 서버가 아닌 다른 서버에서는 해당 요청을 제대로 처리할 수 없을 것입니다. 또는, 여러 개의 프로세스가 동시에 같은 데이터를 변경하려고 하면, 데이터의 일관성이 깨질 수 있습니다.
따라서, 애플리케이션을 설계할 때는 이런 문제가 발생하지 않도록 고려해야 합니다. 예를 들어, 1.모든 서버가 동일한 데이터에 접근할 수 있도록 분산 데이터베이스를 사용하거나, 2.데이터 변경 작업을 동기화하는 등의 방법을 사용할 수 있습니다. 이렇게 설계하면, 애플리케이션은 여러 서버나 여러 인스턴스에서도 안정적으로 운영될 수 있습니다
분산 데이터베이스를 사용하려면 어떻게 하지? 그리고 데이터 변경 작업을 동기화 하는 방법이 뭘까?
1.데이터베이스 관리 시스템(DBMS)이 제공하는 분산 처리 기능을 사용
2.여러 대의 서버에 데이터베이스를 설치하고 이들을 연결하는 방식
1.데이터베이스의 트랜잭션 기능을 사용
2.분산 락이나 분산 트랜잭션을 사용
"일반적으로는 데이터베이스 관리 시스템(DBMS)이 제공하는 분산 처리 기능을 사용하거나, 여러 대의 서버에 데이터베이스를 설치하고 이들을 연결하는 방식을 사용합니다."
분산 처리 방법의 종류는?
이러한 방법들은 각각 장단점이 있으므로, 사용하려는 애플리케이션의 요구 사항에 따라 적절한 방법을 선택해야 합니다. 예를 들어, 복제는 데이터의 안정성을 높이는 데 유용하지만, 쓰기 성능을 향상시키지는 못합니다. 반면, 셰딩은 쓰기 성능을 향상시킬 수 있지만, 데이터의 일관성을 유지하는 것이 더 어렵습니다.
파티셔닝 : 하나의 데이터베이스 내에서 테이블을 논리적으로 분할하는 방법. 각 파티션은 일반적으로 같은 데이터베이스 또는 같은 서버에 위치. 데이터의 조회 성능
을 향상 시킴.
샤딩 : 샤딩은 데이터를 여러 데이터베이스에 분산 저장하는 방법. 셰딩은 데이터의 쓰기 성능
을 향상시키고, 서버 간의 부하를 분산시키는 데 유용함.
파티셔닝과 셰딩은 각각 다른 상황에서 사용됩니다. 파티셔닝은 주로 대용량 테이블을 관리하고, 데이터 조회 성능을 향상시키는 데 사용됩니다. 반면, 셰딩은 데이터베이스의 쓰기 성능을 향상시키고, 서버 간의 부하를 분산시키는 데 사용됩니다
큐 시스템은 일련의 작업을 순서대로 처리하는 데이터 구조입니다. 이는 특히 동시에 많은 요청이 들어오는 시스템에서 유용하게 사용됩니다. 예를 들어, 티켓 예약 시스템에서 동시에 수천명의 사용자가 티켓을 예약하려고 할 때, 모든 요청을 즉시 처리하는 것은 어렵습니다. 이런 경우, 요청을 큐에 넣고 순차적으로 처리하면 시스템의 부하를 줄일 수 있습니다.
메시지 브로커는 이벤트 브로커의 역할을 할 수 없지만 이벤트 브로커는 메시지 브로커의 역할도 할 수 있음.
대용량 트래픽 참고 자료:
좋은 글 감사합니다.