본문 바로가기

근본4

SOLID 원칙 1. SRP - 단일 책임 원칙 - 하나의 클래스는 하나의 책임만 져야한다 (변경이 있을 때 파급 효과가 적으면 SRP 원칙을 잘 따른 것) 2. OCP - 개방-폐쇄 원칙 - 소프트웨어 요소는 확장에는 개방적이어야 하지만 변경에는 패쇄적이어야한다 3. LSP - 리스코프 치환 원칙 - 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야한다 - 다형성에서 하위 클래스는 인터페이스 규약을 다 지켜야 한다는 것, - 인터페이스를 구현한 구현체를 믿고 사용하려면, 이 원칙이 필요하다. 4. ISP - 인터페이스 분리 원칙 - 범용 인터페이스를 특정 클라이언트를 위한 인터페이스로 분리해야한다. - 인터페이스가 명확해지고, 대체 가능성이 높아진다. 5. DIP - 의존 관계 역전 .. 2022. 3. 12.
메모리 캐시 관련해서 겪은 일 이번주에 업무 진행하면서 겪은 일이다. 랜덤하게 세팅된 상품 데이터를 메모리에 캐시를 해놨는데, 생각해보니 서버가 여러대 띄워져 있는걸 생각을 못했다. 역시나 결과는, 각 서버별로 세팅된 데이터가 반복해서 나타났다(ex. 서버가 3대면 3개의 패턴으로) 그래서 redis 붙여서 모든 서버에서 동일한 데이터가 나타나게 했다. 대충 그림으로 표현해보자면 이런것이다 1. 맨 왼쪽 그림처럼, 세팅 되어있는 상태에서 2. 응답에서 당연히 다른 결과가 나올 수 밖에 없는 상황 3. 그래서 메모리에 캐시를 안하고 레디스에 해서 해결했다. 2021. 10. 31.
SPOF (단일 실패 지점) Single Point Of Failure - 시스템을 구성하는 요소들 중에 하나의 요소라도 정상적으로 동작하지 않았을 경우, 전체 시스템을 중단시킬 수 있는 포인트를 SPOF라고 부른다. - 아래 예시와 같이 로드 밸런서에 문제가 생기면 클라이언트들이 제대로 된 응답을 받을 수 없기 때문에, 아래와 같은 아키텍쳐에서 로드 밸런스는 SPOF 라고 볼 수 있다. - MSA 같은 아키텍쳐가 시스템의 기능을 여러 위치에 분산한다는 점에서 잠재적인 SPOF의 위험을 줄일 수 있다. - 이렇게 하면 시스템의 일부가 작동을 멈출 때 전체 시스템이 실패하는 것을 방지할 수 있습니다. 다음주에는 레이어드 아키텍쳐에 대해서 공부해봐야겠다 2021. 10. 17.
block, non-block, 동기, 비동기 관점의 차이이다 block, non-block OS 커널 관점에서 시스템 함수를 호출할때 호출되는 시스템 함수가 무엇이냐에 따라 다르다 동기, 비동기 어플리케이션 관점에서 커널로 I/O요청 한 다음에 다른 일을 할 수 있나 없나에 따라 다르다 2021. 10. 11.