SOLID,ACID

김명광·2024년 6월 20일

TIL

목록 보기
3/6

SOLID 원칙

SOLID 원칙은 객체 지향 설계와 관련된 다섯 가지 중요한 원칙을 나타냅니다. 이 원칙들은 코드의 유연성과 유지 보수성을 높이는 데 도움을 줍니다.

1.단일 책임 원칙 (Single Responsibility Principle, SRP)

  • 정의: 클래스는 하나의 책임만 가져야 하며, 하나의 책임만을 위해 변경되어야 합니다.
  • 예시: User 클래스가 사용자 정보 관리와 데이터베이스 저장 두 가지 책임을 가지고 있다면, 이를 분리하여 User 클래스는 사용자 정보만 관리하고, UserRepository 클래스는 데이터베이스 저장을 담당하도록 합니다.

2.개방-폐쇄 원칙 (Open-Closed Principle, OCP)

  • 정의: 소프트웨어 엔티티(클래스, 모듈, 함수 등)는 확장에는 열려 있어야 하고, 변경에는 닫혀 있어야 합니다.
  • 예시: 새로운 기능을 추가할 때 기존 코드를 수정하지 않고 새로운 클래스를 추가하여 기능을 확장합니다. 예를 들어, 새로운 종류의 보고서를 추가하려면 기존 보고서 클래스를 수정하지 않고, 새로운 보고서 클래스를 추가합니다.

3.리스코프 치환 원칙 (Liskov Substitution Principle, LSP)

  • 정의: 서브타입은 언제나 기반 타입으로 교체할 수 있어야 합니다.
  • 예시: Rectangle 클래스와 Square 클래스가 있을 때, Square 클래스가 Rectangle 클래스를 상속한다면, Rectangle을 사용하는 모든 곳에서 Square를 사용할 수 있어야 합니다.

4.인터페이스 분리 원칙 (Interface Segregation Principle, ISP)

  • 정의: 클라이언트는 자신이 사용하지 않는 메소드에 의존하지 않아야 합니다.
  • 예시: 큰 인터페이스를 여러 개의 작은 인터페이스로 분리하여, 클라이언트가 자신이 필요로 하는 인터페이스만 구현하도록 합니다.

5.의존 역전 원칙 (Dependency Inversion Principle, DIP)

  • 정의: 고수준 모듈은 저수준 모듈에 의존해서는 안 되며, 둘 다 추상화에 의존해야 합니다. 추상화는 구체적인 것에 의존해서는 안 됩니다.
  • 예시: 구체적인 클래스 대신 인터페이스나 추상 클래스를 통해 의존성을 주입합니다. 예를 들어, Service 클래스는 Repository 인터페이스에 의존하고, 실제 구현체는 런타임에 주입됩니다.

ACID 속성

ACID 속성은 데이터베이스 트랜잭션의 신뢰성과 일관성을 보장하기 위한 네 가지 속성을 나타냅니다.

원자성 (Atomicity)

  • 정의: 트랜잭션은 완전히 수행되거나 전혀 수행되지 않아야 합니다. 트랜잭션의 모든 작업이 성공적으로 완료되지 않으면, 트랜잭션의 모든 작업은 취소되어야 합니다.
  • 예시: 은행 송금에서, 한 계좌에서 금액을 출금하고 다른 계좌에 입금하는 작업이 하나의 트랜잭션으로 처리됩니다. 둘 중 하나라도 실패하면 전체 트랜잭션이 취소됩니다.

일관성 (Consistency)

  • 정의: 트랜잭션이 성공적으로 완료되면 데이터베이스는 일관된 상태에 있어야 합니다. 모든 데이터 무결성 제약 조건이 유지되어야 합니다.
  • 예시: 데이터베이스에 저장된 데이터가 트랜잭션 전후에 항상 유효한 상태를 유지해야 합니다. 예를 들어, 은행 계좌의 잔액은 항상 양수여야 합니다.

격리성 (Isolation)

  • 정의: 동시에 실행되는 트랜잭션은 서로의 중간 결과를 볼 수 없어야 합니다. 하나의 트랜잭션이 완료되기 전에는 다른 트랜잭션이 해당 트랜잭션의 영향을 받아서는 안 됩니다.
  • 예시: 두 개의 트랜잭션이 동시에 실행될 때, 한 트랜잭션이 다른 트랜잭션의 중간 상태를 볼 수 없습니다. 이를 통해 일관된 데이터를 보장합니다.

지속성 (Durability)

  • 정의: 트랜잭션이 완료되면, 그 결과는 영구적으로 저장되어야 합니다. 시스템 오류가 발생해도 결과가 손실되지 않아야 합니다.
  • 예시: 트랜잭션이 완료된 후에 데이터베이스 시스템이 충돌하더라도, 완료된 트랜잭션의 결과는 데이터베이스에 영구적으로 남아 있어야 합니다.

요약

  • SOLID 원칙: 객체 지향 설계의 원칙으로, 코드의 유연성과 유지 보수성을 높입니다.
    • 단일 책임 원칙
    • 개방-폐쇄 원칙
    • 리스코프 치환 원칙
    • 인터페이스 분리 원칙
    • 의존 역전 원칙
  • ACID 속성: 데이터베이스 트랜잭션의 속성으로, 데이터의 신뢰성과 일관성을 보장합니다.
    • 원자성
    • 일관성
    • 격리성
    • 지속성
profile
개발자 지망생

0개의 댓글