반응형 전체 글405 응집도와 결합도 응집도(Cohesion) 는 모듈에 포함된 내부 요소들이 연관되어 있는 정도를 나타냅니다. 결합도(Coupling) 는 의존성의 정도를 나타내며, 다른 모듈에 대해 얼마나 많은 지식을 갖고 있는지를 나타냅니다.응집도와 결합도는 변경과 관련이 깊으며, 일반적으로 좋은 설계란 높은 응집도와 낮은 결합도를 가진 모듈로 구성된 설계를 의미합니다. 객체의 행동에서 객체가 알고 있는 모든 정보를 사용하거나, 변경이 존재하는 경우 특정 모듈만 수정되면 응집도가 높다고 판단할 수 있습니다. 또한, 특정 모듈을 변경하는 경우에 다른 모듈도 변경해야 하는 상황에서는 결합도가 높다고 판단할 수 있습니다.캡슐화의 정도가 응집도와 결합도에 영향을 미치는데요. 캡슐화를 지키면, 모듈 안의 응집도는 높아지고 모듈 사이의 결합도는.. 2025. 5. 9. CAP 정리 CAP 정리는 분산 데이터베이스 시스템이 CAP 중 2개의 속성만을 제공할 수 있다는 이론입니다. CAP 정리에 따르자면, 일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance) 등 3가지 속성을 모두 만족하는 분산 데이터베이스 시스템은 존재하지 않습니다.속성 설명일관성(Consistency)은 모든 클라이언트 요청은 어느 노드에 연결되어도 같은 데이터를 볼 수 있음을 의미합니다.가용성(Availability) 은 노드 일부에 문제가 발생하여도 시스템은 클라이언트의 모든 요청에 유효한 응답을 전해줄 수 있어야 함을 의미합니다.분할 내성(Partition Tolerance) 은 노드 사이에 통신이 불가능한 상황(파티션) 에서도 시스템이 계속 동작한.. 2025. 5. 8. NAT(Network Address Translaction) IP 주소는 공인 IP 주소(Public IP Address) 와 사설 IP 주소(Private IP Address) 가 존재합니다. 공인 IP 주소는 고유하며, 사설 IP 주소는 고유하지 않고 특정 사설 네트워크에서만 사용됩니다. 이때, 사설 네트워크는 외부 네트워크에 공개되지 않은 네트워크를 의미합니다. 사설 IP는 일반적으로 라우터가 할당하며, 할당받은 사설 IP 주소는 사설 네트워크 상에서만 유효합니다.사설 IP 주소만을 가지고 외부 네트워크와 통신하기 어렵습니다. 이 문제를 해결하기 위해서 라우터 혹은 공유기의 NAT(Network Address Translation) 기능을 사용하는데요. NAT는 IP 주소를 변환하는 기술입니다. 해당 기능을 사용하면, 사설 IP 주소를 외부 네트워크에 사용되.. 2025. 5. 2. 시스템 간 비동기 연동 방식 분리된 시스템 간의 비동기 연동은 시스템 간의 결합도를 낮출 수 있으며, 호출된 시스템의 응답을 기다리지 않으므로 더욱 빨리 사용자의 요청에 응답할 수 있다는 장점이 있습니다. 비동기 연동 방식으로 메시징 시스템 활용, 데이터베이스 활용, CDC 활용 방식이 있습니다.각 방식에 대한 설명과 고려 사항메시징 시스템 활용메시징 시스템 활용 방식은 두 시스템 사이에 메시징 시스템을 두어 비동기로 연동하는 방식입니다. 해당 방식은 한 시스템에서 메시지를 생성해서 메시징 시스템에 송신한 이후, 다른 시스템에서 메시징 시스템으로부터 메시지를 수신해서 메시지를 처리합니다. KafKa, RabbitMQ가 주로 메시징 시스템으로 활용됩니다. 해당 방식은 처리량이 높은 것이 장점입니다. 하지만, 메시지 유실, 메시지 소비.. 2025. 4. 30. 캐시 스탬피드 현상 대규모 트래픽 환경에서 캐시를 운용하는데, Cache Aside(캐시 미스 발생 시 적재) 전략을 사용한다고 가정하겠습니다. 이때, 수많은 요청들이 동시에 캐시 미스를 확인하고 원본 저장소에서 데이터를 가져와 캐시에 적재하는 상황이 발생할 수 있는데요. 이를 캐시 스탬피드 현상 혹은 Thundering Herd 문제라고 표현합니다. 캐시 스탬피드 현상은 원본 데이터베이스와 캐시의 성능을 저하할 수도 있습니다. 문제 해결방식해당 방식은 잠금, 외부 재계산, 확률적 조기 재계산 방식으로 풀어볼 수 있습니다.잠금(Locking) 방식잠금(Locking) 방식 은 한 요청 처리 스레드가 해당 캐시 키에 대한 잠금을 획득합니다. 이로인해 다른 요청 처리 스레드들은 잠시 대기합니다. 잠금을 획득한 스레드는 사용자 .. 2025. 4. 29. 관계형, 비 관계형 데이터베이스 관계형 데이터베이스관계형 데이터베이스는 고정된 로우와 컬럼으로 구성된 테이블에 데이터를 저장한다. 그리고 SQL을 사용하여 여러 테이블에 존재하는 데이터와 관계에 따라서 조인하여 합칠 수도 있다. 관계형 데이터베이스는 데이터를 중복 없이 한 번만 저장하고, 데이터 무결성을 보장한다. 관계형 데이터베이스의 경우 일반적으로 스케일 업을 사용하여 확장한다. 관계형 데이터베이스는 스키마를 유연하게 바꾸기 어렵다는 한계가 존재한다. 또한, 관계가 존재하기 때문에 비즈니스 요구사항이 더욱 발전하면 복잡한 쿼리가 생기게 된다.비 관계형 데이터베이스반면, 비 관계형 데이터베이스는 NoSQL이라고 불리기도 하는데, 정해진 스키마가 존재하지 않으며 자유롭게 데이터를 저장하고 조회할 수 있다. 문서, 키-값, 와이드 컬럼,.. 2025. 4. 28. 벨만-포드 알고리즘 그래프 최단 경로 구하기 2. 벨만-포드 알고리즘 최단 경로는 '가중치' 유무에 따라 다르다가중치가 없는 그래프에서는 간선 개수가 가장 적은 경로가중치가 있는 그래프에서는 가중치의 총합이 최소가 되는 경로벨만-포드 알고리즘노드에서 노드까지의 최소 비용을 구한다.매 단계마다 모든 간선의 가중치를 다시 확인하여 최소 비용을 갱신하므로, '음의 가중치'를 가지는 그래프에서도 최단 경로를 구할 수 있는 특징이 있다.다익스트라 알고리즘은 음의 가중치를 허용하지 않는다는 점과 차별화된다.시작 노드 최소 비용:0, 나머지 노드 INF 초기화 (최소 비용을 갱신할 때 직전 노드 갱신)노드 개수 -1 만큼 연산 반복최소 비용보다 더 적은 최소 비용이 있는지 확인하여 갱신하고, 직전 노드 값도 같이 갱신한다.마지막에 과정.. 2025. 4. 25. HTTP/1.1, HTTP/2.0 HTTP/1.1HTTP는 웹상에서 클라이언트와 서버 간 통신을 위한 프로토콜이다.HTTP/1.0의 경우에는 한 개의 요청과 응답마다 TCP 커넥션을 생성하여 사용됐었다. 하지만, 이러한 방식은 매 요청마다 연결을 생성하는 오버헤드가 발생한다. HTTP/1.1은 이러한 문제를 지속 커넥션(Persistent Connection) 이라는 지정한 타임아웃만큼 커넥션을 종료하지 않는 방식으로 해결한다.또한 파이프라이닝(Pipelining) 을 지원하여 요청의 응답 지연을 감소한다. 파이프라이닝에서 HTTP 요청은 연속적이며, 순차적으로 전달된다. 기존에는 요청한 이후에 응답을 기다리고 그 다음 요청을 보냈는데, 파이프라이닝에서는 필요한 모든 자원에 대한 요청을 순차적으로 서버로 전송한 다음 모든 요청에 대한 .. 2025. 4. 25. 스케일 업과 스케일 아웃 기존 개발하고 있던 서비스의 서버가 한계에 도달하는 경우, 스케일 업(Scale-Up) 혹은 스케일 아웃(Scale-Out) 을 고려할 수 있다.스케일 업스케일 업 은 기존의 서버를 더욱 높은 사양으로 업그레이드하는 것을 의미한다. 예를 들어, AWS에서 EC2 t2.micro에서 t2.small로 업그레이드하는 방식이 스케일 업이다. 스케일 업 방식은 상대적으로 간단하게 서버의 성능을 항상 시킬 수 있다는 장점이 있다. 하지만, 특정 서버를 무한정 업그레이드할 수 없으며, 장애에 대한 자동복구(failover)나 다중화(re-dundancy) 방안을 제시하지 않는다. 또한 스케일 업 전략을 선택하는 경우에는 향후 사용량을 미리 추정하여 미리 고사양의 서버를 확보하는 경우가 있다. 이러한 경우 실제 필요.. 2025. 4. 23. 이전 1 2 3 4 5 ··· 45 다음 728x90 반응형