목록매일메일 (63)
종식당

🥇 응집도 (Cohesion)응집도는 모듈에 포함된 내부 요소들이 연관되어 있는 정도를 나타낸다. 🥈 결합도 (Coupling)결합도는 의존성의 정도를 나타내며, 다른 모듈에 대해 얼마나 많은 지식을 갖고 있는 지를 나타낸다. 응집도와 결합도는 변경과 관련이 깊으며, 일반적으로 좋은 설계란 높은 응집도와 낮은 결합도를 가진 모듈로 구성된 설계를 의미한다. 객체의 행동에서 객체가 알고 있는 모든 정보를 사용하거나, 변경이 존재하는 경우 특정 모듈만 수정되면 응집도가 높다고 판단할 수 있다. 또한, 특정 모듈을 변경하는 경우에 다른 모듈도 변경해야 하는 상황에서는 결합도가 높다고 판단할 수 있다.캡슐화는 무엇인가요? 😀객체 내부의 세부적인 사항을 감추는 것을 캡슐화라고 한다. 캡슐화의 목적은 변경하기 ..

CAP 정리는 분산 데이터베이스 시스템이 CAP 중 2개의 속성만을 제공할 수 있다는 이론이다. CAP정리에 따르자면, 일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance)등 3가지 속성을 모두 만족하는 분산 데이터베이스 시스템은 존재하지 않는다.각 속성에 대해서 설명해 주시겠어요? 🤔일관성 Consistency일관성은 모든 클라이언트 요청은 어느 노드에 연결되어도 같은 데이터를 볼 수 있음을 의미한다.가용성 Availability가용성은 노드 일부에 문제가 발생하여도 시스템은 클라이언트의 모든 요청에 유요한 응답을 전해줄 수 있어야 한다.분할 내성 Partition Tolerance분할 내성은 노드 사이에 통신이 불가능한 상황에서도 시스템이..

대규모 트래픽 환경에서 캐시를 운용하는데, Cache Aside(캐시 미스 발생 시 적재) 전략을 사용한다고 가정해 보자. 이때, 수많은 요청들이 동시에 캐시 미스를 확인하고 원본 저장소에서 데이터를 가져와 캐시에 적재하는 상황이 발생할 수 있는데 이를 캐시 스탬피드 현상 혹은 Thundering Herd문제라고 표현한다. 캐시 스탬피드 현상은 원본 데이터베이스와 캐시의 성능을 저하할 수도 있다. 이 문제는 어떻게 풀어볼 수 있을까요? 🤓해당 방식은 크게 잠금, 외부 재계산, 확률적 조기 재계산 방식으로 풀어볼 수 있다.잠금 방식(Locking)잠금 방식은 한 요청 스레드가 해당 캐시 키에 대한 잠금을 획득한다. 이로 인해 다른 요청 처리 스레드들은 잠시 대기한다. 잠금을 획득한 스레드는 사용자 요청에..

🥇 관계형 데이터베이스관계형 데이터베이스는 고정된 로우와 칼럼으로 구성된 테이블에 데이터를 저장한다. 그리고 SQL을 사용하여 여러 테이블에 존재하는 데이터와 관계에 따라서 조인하여 합칠 수도 있다. 관계형 데이터베이스는 데이터를 중복 없이 한 번만 저장하고, 데이터 무결성을 보장한다. 관계형 데이터베이스의 경우 일반적으로 스케일업을 사용하여 확장한다.관계형 데이터베이스는 스키마를 유연하게 바꾸기 어렵다는 한계가 존재한다. 또한, 관계가 존재하기 때문에 비즈니스 오구 사항이 많아지면 복잡한 쿼리가 생기게 된다.🥈 비관계형 데이터베이스반면, 비관계형 데이터베이스는 NoSQL이라고 불리기도 하는데 정해진 스키마가 존재하지 않으며 자유롭게 데이터를 저장하고 조회할 수 있다. 문서, 키-값, 와이드 컬럼, ..

특정 메서드를 호출하는 경우 인자로 전달하는 방법은 크게 2가지가 존재한다. 값에 의한 호출 (Call By Value), 참조에 의한 호출(Call By Reference)이 이에 해당된다.🎋 Call By Value값에 의한 호출은 메서드를 호출할 때, 값 자체를 넘겨주는 방식이다. 메서드를 호출하는 함수의 변수와 호출된 함수의 파라미터는 서로 다른 변수이다.🎍 Call By Reference참조에 의한 호출은 메서드를 호출할 때, 참조를 직접 전달하는 방식이다. 참조를 직접 전달하기 때문에 호출하는 함수의 변수와 호출된 함수의 파라미터는 동일한 변수이다. 따라서, 파라미터를 수정하는 경우 그대로 원본에도 영향을 미친다.자바는 어떤 방식을 채택하나요? 🤓자바는 Call By Value만 존재한다..