캡슐화와 불변식
상태 변경을 메서드로 제한해 잔액·재고 같은 불변식을 한 경계에서 검증합니다.
BACKEND CONCEPT NOTES
면접에서 기능을 나열하지 않고, 전제·선택·실패 모드·검증 방법을 설명하기 위한 C#과 ASP.NET Core 실무 노트입니다.
상태 변경을 메서드로 제한해 잔액·재고 같은 불변식을 한 경계에서 검증합니다.
변하는 정책은 인터페이스와 조합으로 분리해 결합과 파급 범위를 줄입니다.
호출자는 행위 계약에 의존하고 구현은 교체 가능하게 둡니다.
의존성 역전은 테스트 편의가 아니라 외부 기술과 도메인 규칙의 경계를 만드는 일입니다.
변경 공유가 위험한 데이터는 불변 값 객체로 모델링하고 복사 비용과 함께 판단합니다.
예외는 예상 가능한 분기가 아닌 실패 경로에 사용하고 자원은 using으로 소유권을 명확히 합니다.
예외·보안·라우팅·엔드포인트 순서는 요청과 응답의 흐름을 기준으로 결정합니다.
Singleton은 공유 상태와 스레드 안전성을, Scoped는 요청 경계와 DbContext 수명을 고려합니다.
비동기 I/O는 대기 중 스레드를 반환하며 CancellationToken은 클라이언트 이탈을 하류까지 전파합니다.
트랜잭션, 낙관적 동시성, 멱등성 키는 서로 다른 실패 모드를 막으므로 함께 설계합니다.
비밀은 소스 밖에 두고 인증과 인가는 별도로 검증하며 입력은 서버에서 다시 검증합니다.
구조화 로그, 추적 ID, 헬스 체크, 지표를 통해 장애의 영향과 원인을 빠르게 좁힙니다.