본문 바로가기
728x90

programming17

시간적 결합(temporal coupling) 결합도는 소프트웨어의 유연성을 해친다. 시간적 결합은 coupling의 한 종류이며 어떤 방식으로 인해 코드가 시점에 의존하는 것을 의미한다. 시간적 결합이 있는 코드는 그 코드가 정확이 무엇을 하는지를 알지 못하는 한 사이드 이팩트를 야기한다. 다음은 시간적 결합의 종류와 예시이다. Sequencing 하나의 일이 어떤 일이 완료된 후 실행되야 하는 경우이다. 아래의 코드가 그 예시이다. 1 2 3 var circle = new Circle(); circle.setRadius(10); circle.getCircumference(); // throws if you haven't called setRadius() first! cs 이런식으로 정해진 순서대로 코드를 작성해야 하는 것은 프로그래머가 요구되는 .. 2022. 1. 8.
분산 시스템(distributed system) 분산 시스템은 분산 컴퓨팅(distributed computing) 또는 분산 데이터베이스(distributed databases)로 알려져 있다. 하나의 분산 시스템은 서로 다른 머신들에 위치해 있는 독립된 컴포넌트들의 묶음이다. 이 묶음은 하나의 공통된 목적을 달성하기 위해 서로 메시지를 주고받는다. 분산 시스템은 엔드포인트에서는 하나의 인터페이스 처럼 나타내어진다. 분산 시스템은 하나의 시스템에서 장애가 발생해도 서비스의 가용성에 영향을 미치지 않는것 처럼 리소스를 극대화 할 수 있다. 현대의 분산 시스템은 갖은 물리적 머신에서 동작하지만 독립적으로 동작하고(autonomous processes) 상호작용을 위해 메시지를 주고 받기도 한다. 분산 시스템에서 요구되는 기능 Resource Sharin.. 2021. 12. 28.
TDD(Test Driven Dvelopment) TDD는 테스트케이스를 작성한 후 실제 코드를 개발해 리펙토링을 한다. 기존 방식: TDD: 애자일에서는 불확실성이 높을 때 피드백과 협력이 중요하다고 한다. TDD역시 이런 이유로 반복적인 피드백과, 협력을 중요시 한다. 만약 특정 기능을 하는 코드를 반복적으로 작성한 경험이 있거나 결과가 명백하다면 TDD를 하지 않아도 된다. 하지만 다음과 같은 경우에서는 TDD를 하는 것이 적절하다. 1. 처음해보는 프로그램 주제 - 나에 대한 불확실성이 높을 경우 2. 고객 요구사항이 지속적으로 바뀔경우 - 외부적인 불확실성이 높을 경우 3. 개발 중에 코드를 많이 바꾸어야 하는 경우 4. 누가 유지보수를 할지 모르는 경우 Test의 명사화 TDD에서 test는 동사가 아닌 명사이다. 즉, 동사처럼 그 순간에만 .. 2021. 11. 7.
Event driven Event Driven Architecture(EDA)는 분리되어 있는 애플리케이션들이 event broker를 통해 비동기적으로 이벤트들을 구독하고 실행할 수 있는 소프트웨어 디자인패턴이다. EDA는 비즈니스 전반에 걸쳐 이벤트가 발생했을 때 애플리케이션, microservice, 연결된 디바이스 간에 실시간으로 정보가 오고가게 할 수 있도록 지원하는 IT 엔터프라이즈 시스템이다. EDA에서의 event 하나의 서비스에서 발생하능한 모든 일은 이벤트이다. 소비자의 요청, 품목 업데이트, 센서 감지 등. 주어진 이벤트에 대해 대응을 할때 그의 가치는 시간이 지남에 따라 감소한다. 따라서 더 빠르게 필요한 이벤트에 대한 정보를 얻을수록, 기업은 고객만족, 생산전환 등의 기회에 효율적으로 대응할 수 있다. .. 2021. 9. 25.
728x90