본문 바로가기

ACC

(18)
[디자인 패턴] 3. 데코레이터 패턴 변경되는 부분에 대해 데코레이터를 이용해 재귀적으로 구성 요소 객체를 Decorate한다면, 기존 코드의 변경 없이 동적으로 확장 할 수 있다. 커피 전문점의 주문을 돕는 프로그램을 작성한다고 생각해보자. 만약 음료를 나타내는 수퍼 클래스 하나를 상속받는 여러 음료들의 서브 클래스를 만들어서 주문을 처리하는 것이 과연 적합할까? 직관적으로 생각해봐도 문제가 있다. 음료들은 시럽, 펄 추가 혹은 무지방 우유, 두유로 변경하는 등의 가공을 거칠 수 있다. 상속을 이용한다면 일반적인 카페 라떼를 하나 구현하기 위해 카페 라떼, 무지방 라떼, 두유 라떼, 시럽 추가 라떼, 오트 라떼 등등 굉장히 많은 서브 클래스를 필요로 하는 것을 알 수 있다. 또한 이전까지 배운 객체 지향 원칙에 어긋나는 방식임을 알 수 있..
[디자인 패턴] 1. Intro 수퍼 클래스를 상속받는 서브 클래스들이 있을 때, 변화하는 부분을 단순 상속으로 처리하지 말고 인터페이스로 캡슐화한다. 변화하는 부분은 해당 캡슐에 위임하면 유지보수가 간편해진다. 여러 오리를 구현하는 코드를 작성한다고 해보자. 수퍼 클래스로 오리를 만들고, 서브 클래스는 청둥오리, 집오리, 고무오리, 나무오리 등이 있을 수 있다. 아직까지는 오리의 울음소리와 떠다니는 기능만 구현되어 있고, 모든 서브 클래스는 이를 상속하고 있다. 만약 날아다니는 기능을 추가하고자 한다면 단순히 수퍼 클래스에 fly라는 메서드를 추가하고 서브 클래스가 상속받으면 끝일까? 답은 당연히 아니다. 고무오리와 나무오리는 날 수 없기 때문이다. 상속은 코드의 재사용성을 높일 수 있지만 위처럼 유지보수에는 별로 좋지 않다. 클래스..
[ASC 1기] 5주차 - Storage [이론] S3: 클라우드가 탑재된 보조기억장치 (like 구글 드라이브) 주로 이미지를 저장할 때 S3를 많이 이용한다. 일반적 데이터는 DB에 저장하지만 이미지를 저장하기에는 적합하지 않음. DB에 이미지의 주소를 저장하고 S3에는 이미지를 넣는 것. (엔드 포인트: 객체 접근 가능 주소) 용량에 대한 제한이 없다고 생각해도 된다. 사용량별로 요금이 나간다. S3는 리전별로 다른 서비스이지만, 주소는 글로벌 단위로 겹치면 안된다. (세계 유일) 실제로 개발에 사용하는 드라이브라서 파일 저장에 대한 관리 가능. (자주 사용되거나, 자주 쓰지는 않는데 오래 갖고 있어야 하는 것들 등을 자동으로 분리해서 관리해주는 서비스도 있다. (ex. 자주 접근을 안하면 속도가 느린 버킷에 넣거나..)) IAM은 AWS..
[ASC 1기] 5주차 준비 - 리스너, 규칙 [ALB의 구성 요소] 리스너 규칙(rule) 대상 그룹(Target Group) 사용자의 요청이 들어왔을 때의 과정 사용자의 요청 → ALB → 리스너 → 규칙을 기반으로 특정 대상 그룹에 요청을 넘김. (ex. 이번주 과제에서 로드 밸런서의 DNS를 타고 들어가면 위의 과정을 실행하게 됨) [리스너] Applicaion Load Balancer의 리스너는 7계층(Applicaion)의 프로토콜(HTTP, HTTPS)에 해당하는 요청을 받아들인다. 또한 HTTP 요청 메시지에 딸려오는 정보들을 이용하여 규칙에 의해 라우팅을 하게 된다. default 포트 번호는 HTTP는 80, HTTPS는 443이고, 다른 포트 번호를 사용하는 리스너를 생성할 수도 있다. 이번 과제 중 리스너? 다음과 같이 80번을..
[ASC 1기] 4주차 - Auto Scaling Group, Load Balancing [이론] auto scaling group: 해당 그룹 내에 존재하는 인스턴스의 양을 조절하여 필요한 양의 트래픽만 처리할 수 있도록 함. c최대, 최소, 현재 얼마나 띄울 것인지 설정 가능. elastic load balancer: 여러 인스턴스에 대해 트래픽을 공평하게 나눠주는 장치. auto scaling group에 속한 인스턴스들이 처리하는 트래픽의 balance를 맞춰준다. 그렇기 때문에 auto scaling group과 같이 쓴다. 탄력적 ip: 불변성을 띄는 ip. 기존 인스턴스가 갖는 ip주소는 재시작 시에 주소가 바뀌는 가변적인 ip주소이다. 가변적인 ip주소는 DNS에 ip주소를 할당한 경우 문제가 발생할 수 있기 때문에 탄력적 ip를 사용한다. 다만, 탄력적 ip를 받고 방치한다면..
[ASC 1기] 4주차 준비 - 네트워크, Transit Gateway 복습 [리전] 물리적으로 구분된 호스팅 영역. 거리가 멀면 당연히 통신 속도도 느려지기 때문에 여기저기에 데이터 센터를 구축한다면 속도를 향상시킬 수 있고, 여러 개의 데이터 센터가 존재하기 때문에 안정적이다. ※ 리전은 서로 독립적이다. [가용영역 (AZ)] 리전보다 더 작은 단위. 실제로 존재하는 데이터 센터를 의미한다. 서울 리전에는 4개의 AZ가 존재한다. 1개 리전은 최소 두개 이상의 AZ로 구성된다고 한다. [VPC] 네트워크를 독립된 가상의 네트워크로 구성하는 것. VPC는 서로 독립적이므로 VPC간 통신은 피어링을 통해 이루어질 수 있다. [Subnet] 네트워크를 쪼개는 개념. AWS에서는 VPC를 통해 독립된 가상의 네트워크를 분할하여 서브넷을 구성한다. private, public을 ..
[ASC 1기] 3주차 준비 - Subnet 이번주 주제는 VPC, Route53, Subnet, Region이다. 지난 학기 데이터 통신 과목을 수강하면서 IP 주소가 주어졌을 때, 서브넷마스크, 네트워크 ID, 브로드캐스트주소를 계산하는 문제가 나왔었다. 학점을 위해 구하는 공식은 외우고 무엇인지는 모르는 상태였는데 그 생각이 나서 한번 알아보기로 했다. [IP] IP? → Internet Protocol의 약자 Protocol이란 통신 규약(신호처리, 오류처리, 암호, 인증, 주소 등에 대한)을 의미한다. 예시로는 우리가 URL앞에 붙이는 http 역시 http 프로토콜을 따른다는 의미이다. Internet Protocol은 인터넷에서 사용하는 통신 규약을 의미. [IP 주소] IP가 무엇인지 알았으니 IP 주소는 간단하다. IP를 따르면서 ..
[ASC 1기] 2주차 - Docker 가상환경: other kernel, 커널 레벨에서부터 격리 도커: Same kernel, 자원만 격리 (반가상화, 가벼움) i는 입출력 옵션, i는 저거 가상 터미널 환경을 에뮬레이션해주는 옵션. 그래서 도커를 run할 때는 -it옵션을 준다. d옵션은 프로세스가 끝나도 유지되도록 하는 옵션 Dockerfile을 만들어서 이미지를 말아주자. 그리고 docker build -t [이미지이름] [경로] aws 들어가서 elastic container repository 들어가서 레포를 하나 만들어주자. 그리고 AWS CLI 로그인 후에 aws ecr get-login-password 여기서 막혔었는데 IAM에 AdministratorAccess 권한을 추가해주니 됐다. aws ecr get-login-pas..