ComputerScience 80

[DesignPattern] Singleton Pattern

싱글톤 패턴 (Singleton Pattern) Singleton 패턴은 소프트웨어 디자인 패턴 중 하나로, 클래스의 인스턴스화를 단일 인스턴스로 제한하는 소프트웨어 디자인 패턴입니다. "Gang of Four" 디자인 패턴 중 하나로, 객체 지향 소프트웨어에서 반복적으로 발생하는 문제를 해결하는 방법을 설명합니다. 이 패턴은 시스템 전체에 걸쳐 작업을 조정해야 할 때 유용합니다. Singleton 패턴을 사용하면 객체가 다음을 수행할 수 있습니다. 1. 하나의 인스턴스만 가지도록 보장 2. 해당 인스턴스에 쉽게 액세스 3. 인스턴스의 생성을 제어 (예: 클래스의 생성자를 숨김) 이 용어는 수학적인 개념인 'singleton'에서 유래되었습니다. 싱글톤은 종종 global 변수와 비교하여 선호되는데, 그..

[DesignPattern] Factory Pattern과 Factory Method, Abstract Factory 차이 (+피자가게 예시)

Factory Pattern 새로운 객체가 필요한 곳마다 new를 사용하여 구상 클래스를 코딩하면, 나중에 코드를 수정해야 할 가능성이 커지고 유연성이 떨어집니다. 디자인 패턴을 적용하지 않은 코드 예시를 보겠습니다. public class DependentPizzaStore { public Pizza createPizza(String style, String type) { Pizza pizza = null; if (style.equals("NY")) { if (type.equals("cheese")) { pizza = new NYStyleCheesePizza(); } else if (type.equals("veggie")) { pizza = new NYStyleVeggiePizza(); } else i..

[DesignPattern] Decorator Pattern

Decorator Pattern 데코레이터 패턴(Decorator pattern)이란 주어진 상황 및 용도에 따라 동적 혹은 정적으로 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있습니다. 여기서 동적으로 추가할 때는 보통 특정 객체를 결합하는 방식을 사용합니다. Class Diagram (클래스 다이어그램) Abstract Decorator (추상 데코레이터) 클래스 이 클래스는 Component 객체를 참조하는 참조 변수 (component)를 유지합니다. 모든 요청을 이 참조된 객체로 전달합니다 (component.operation()). 이로써 Decorator는 Component의 클라이언트에게 투명하게(보이지 않게) 동작합니다..

[DesignPattern] Observer Pattern

Publishers + Subscribers = Observer Pattern 옵저버 패턴(Observer Pattern)은 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체에 연락이 가고 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many) 의존성을 정의합니다. 1. Class Diagram (클래스 다이어그램) Subject 클래스는 의존 객체(dependent objects)의 상태를 직접적으로 업데이트하지 않습니다. 대신, Subject는 Observer 인터페이스의 메서드 update()를 참조하여 상태를 업데이트합니다. 이렇게 함으로써 Subject는 의존 객체의 상태가 어떻게 업데이트되는지에 독립적이게 됩니다. Observer1과 Observer2 클래스는 Observer ..

[Java] abstract vs interface 언제 써야하는가?

디자인패턴을 공부하다 보니 어떨 땐 abstract 클래스로, 어떨 땐 interface로 구현을 하는 것을 보았는데 이 둘의 차이를 명확히 잘 몰라서 알아보았습니다. Abstract Class와 Interface 추상클래스 (Abstract class) 자바에서는 하나 이상의 추상 메소드(abstract method)를 포함하는 클래스를 가리켜 추상 클래스(abstract class)라고 합니다. 여기서 추상 메소드란 자식 클래스에서 반드시 오버라이딩해야만 사용할 수 있는 메소드를 의미합니다. 자바에서 추상 메소드를 선언하여 사용하는 목적은 추상 메소드가 포함된 클래스를 상속받는 자식 클래스가 반드시 추상 메소드를 구현하도록 하기 위함입니다. 예를 들면 모듈처럼 중복되는 부분이나 공통적인 부분은 미리 ..

[2023 AWSome Day] AWS를 통한 혁신

* 이 글은 2023 11.16일 AWS에서 진행한 온라인 콘퍼런스인 AWSome Day를 듣고 정리하였습니다. 강연 5: AWS와 혁신하기 사물 인터넷 IOT는 Internet of things의 약자 물리적 디바이스인 차량, 전자 기기나 장치, 소프트웨어 센서 및 이러한 물체가 서로 연결하여 데이터를 교환하는 상호 연결된 네트워크 정보의 원활하고 자율적인 흐름을 지원하고 디바이스 간 통신을 원활하게 하여 커넥티드 환경 구성 클라우드 기반 iot는 물리 세상과 가상 세상을 연결함 이러한 연결을 통해 디바이스와 데이터를 주고받을 수 있음 하지만 데이터를 대규모로 수집하려면 데이터를 효과적으로 수집해야하고 데이터를 삭제하고 정리하는 프로세스가 없으면 쓸모가 없어짐 당면한 세 가지 과제 1. 데이터 보안 -..

[2023 AWSome Day] AWS 클라우드 핵심 서비스 소개: 네트워킹, 보안

* 이 글은 2023 11.16일 AWS에서 진행한 온라인 콘퍼런스인 AWSome Day를 듣고 정리하였습니다. 강연 4: 네트워킹, 보안 Amazon Virtual Private Cloud (Amazon VPC) VPC란, AWS Cloud의 개인 네트워크 공간 VPC는 리전 범위의 서비스며 선택한 리전의 가용영역에 걸쳐 생성된다. ip 주소 범위 서브넷 생성, 라우팅, 인터넷 게이트웨이 구성 등 가상 네트워킹 환경을 사용자가 직접 제어 가능 서브넷 vpc, ip 주소 범위 내에 세그먼트 또는 파티션으로 볼 수 있으며 각각 워크로드 격리 퍼블릭 서브넷 공용 인터넷에서 직접 엑세스 가능, EC2는 외부 인터넷에 접근 가능해야 하므로 퍼블릭 서브넷 프라이빗 서브넷 공용 인터넷에 접근 불가능 Elcastic..

[2023 AWSome Day] AWS 클라우드 핵심 서비스 소개: 데이터베이스

* 이 글은 2023 11.16일 AWS에서 진행한 온라인 콘퍼런스인 AWSome Day를 듣고 정리하였습니다. 강연 3: 데이터베이스 비관리형 서비스와 관리형 서비스(aws) 비교 Amazon EC2 인스턴스에서 데이터베이스 소프트웨어를 호스팅 할 경우 운영체제 엑세스해야하는 세밀한 조정이 필요한 경우 직접 호스팅 가능 AWS가 지원하지 않는 상용 DB 소프트웨어 구축가능 AWS 데이터베이스 관리형 서비스를 이용하면 데이터베이스 프로비저닝, 백업과 복구 작업 실행, 보안 패치와 스토리지 및 사소한 버전 업데이트 같은 관리 작업은 AWS가 해결하므로 비즈니스와 애플리케이션에 집중 가능 목적별 데이터베이스 다양한 AWS DB는 다양한 데이터 모델을 지원하므로 확장성이 뛰어난 분산 애플리케이션을 쉽게 구축 ..

[2023 AWSome Day] AWS 클라우드 핵심 서비스 소개: 컴퓨팅, 스토리지

* 이 글은 2023 11.16일 AWS에서 진행한 온라인 콘퍼런스인 AWSome Day를 듣고 정리하였습니다. 강연 2. AWS 클라우드 핵심 서비스 소개: 컴퓨팅, 스토리지 컴퓨팅 Amazon Elastic Compute Cloud(Amazon EC2) 크기 조정 가능한 컴퓨팅 용량 컴퓨팅 리소스 완전 제어 새로운 서버 인스턴스 확보 및 부팅 시간 단축 이점 탄력성: 몇 분만에 프로비저닝 하고 시간 제어: 워크로드를 통해 인스턴스 시작 및 중지 유연성: 컴퓨팅 시간에만 컴퓨팅 시간에 대해서만 비용을 지불할 수 있음 AMI Amazon Machine Images로 AWS 마켓 플레이스에서 사용 가능한 하드웨어 및 소프트웨어를 종량 과금제를 통해 제공 ex) 워드프레스 애플리케이션을 사용하고 싶으면 ma..

[2023 AWSome Day] AWS 클라우드 소개 정리

* 이 글은 2023 11.16일 AWS에서 진행한 온라인 콘퍼런스인 AWSome Day를 듣고 정리하였습니다. 강연 1. AWS 클라우드 소개 클라우드란? 기존 온프레미스 환경은 데이터 센터를 직접 구축하고, 서버, 스토리지, 데이터 베이스, 애플리케이션, 네트워크 서비스를 직접 구축해야 했습니다. 클라우드는 IT 서비스를 사용한 만큼만 돈을 내는 서비스로, 개발자는 관리나 운영에 대한 신경을 쓸 필요가 없습니다. 클라우드는 구름, 즉 인터넷을 통해 원격지에 있는 IT 리소스를 사용하는 개념으로, 인프라를 하드웨어로만 생각하는 것이 아니라 소프트웨어적인 측면도 고려합니다. 클라우드 서비스의 주요 특징으로는 민첩성(온디맨드), 탄력성(빠른 규모 조정으로 수요에 대응), 비용 절감, 그리고 전 세계에 손쉽..