본문 바로가기

전체 글

(35)
[AWS] AWS의 구성 AWS 안에 다양한 리전이 존재하고 그 안에 가용영역이 존재한다 * AWS의 리전 (region) > 리전을 선택할 때 고려할 점 지연 속도 법률 (데이터, 서비스 제공 관련) 사용 가능한 AWS 서비스 (특정 리전에서 몇몇 서비스는 안 될 수 있음) > US-East-1 리전 모든 AWS의 서비스가 최초로 서비스되는 리전 기타 글로벌 서비스의 서비스 리전 (빌링, CloudFront 등) * 가용 영역 (Availavility Zone) > 가용 영역이란? 리전의 하부 단위 (하나의 리전은 반드시 2개 이상의 가용 영역으로 구성) AZ라고 줄여 부름 > 가용 영역의 구성 하나 이상의 데이터 센터로 구성 AZ 간의 연결은 매우 빠른 전용 네트워크로 연결 (하나의 데이터센터처럼 구성) 반드시 물리적으로 일..
[AWS] 클라우드 관련 개념 및 용어 고가용성 (High Availavility) - 장애 상황을 해결하고 서비스를 지속할 수 있는 능력 - 장애 상황의 준비가 되어 있는 아키텍쳐가 필요 장애 내구성 or 내결함성 (Fault Tolerance) - 장애 상황에도 서비스를 지속할 수 있는 능력 - 장애 상황에 영향을 받지 않는 아키텍쳐가 필요 재해 복구 (disaster recovery) - 말 그대로 장애 상황을 복구하는 것 확장성 (scalable) - 쉽고 빠르게 규모를 늘릴 수 있는 능력 > 주로 수요에 따라 컴퓨팅 파워 혹은 용량 확장 탄력성 (Elastic) - 수요에 따라 컴퓨팅 파워/용량을 확장하거나 축소할 수 있는 능력 > 불필요한 자원을 사용하지 않고 비용 최적화에 필수적인 능력 긴밀한 결한 (Tight Coupling) ..
[AWS] 클라우드 컴퓨팅 모델 클라우드 컴퓨팅은 분류에 따라 크게 두 가지로 나눌 수 있다. 1) 클라우드 컴퓨팅 모델 2) 클라우드 컴퓨팅 배포 모델 IaaS : Infrastructure as a Service PaaS : Platform as a Service SaaS Software as a Service ※ 정리 1) 클라우드 컴퓨팅 모델 IaaS : Infrastructure as a Service - 인프라만 제공 (주방만 빌리기) PaaS : Platform as a Service - 인프라 + OS + 런타임 제공 (주방 + 주방기기 + 재료 빌리기) SaaS : Software as a Service : 모두 제공 (전부 다 빌리기) 2) 클라우드 컴퓨팅 배포 모델 공개형 폐쇄형 혼합형
[AWS] 클라우드 컴퓨팅이란? 클라우드 컴퓨팅은 IT리소스를 인터넷을 통해 온디맨드로 제공하고 사용한 만큼만 비용을 지불하는 것을 말한다. * 온디맨드 : 수요에 반응함 USER가 많아지면 많은 정보를 주고 받아야 하므로 비효율적인 상태가 된다. 이것을 해결하기 위해 아래와 같이 서버-클라이언트 아키텍쳐가 등장했다. 위와 같이 서버-클라이언트 아키텍쳐로 많은 서버가 필요하여 데이터센터가 구축되었다. * 데이터센터 : 어플리케이션의 서버를 호스팅하는 실제 시설 데이터센터 운영에는 많은 인프라가 필요하므로 비용이 많이 소모된다. 또한 한번 구매하면 수요에 상관없이 계속 보유해야 한다. 구축 시간도 느리므로 유저의 수요에 빠르게 대처하기 힘들며 장애 기기를 교체하는 시간 역시 느리다. 이러한 단점을 보완하기 위해 클라우드 환경에서 어플리케..
스프링부트 Swagger (SpringFox Boot Starter 3.0.0) 설정 관련 에러 IntelliJ로 스프링 프로젝트 작업 중 swagger를 사용하기 위해 maven repository를 방문하여 SpringFox Boot Starter >> 3.0.0을 찾아 implementation group: 'io.springfox', name: 'springfox-boot-starter', version: '3.0.0'를 build.gradle 파일의 dependencies에 넣어주었다. 기존의 SprinfFox Swagger2, SpringFox Swagger UI를 추가하고 사용을 위해 어노테이션을 추가하는 등과 같은 번거로움을 해결할 수 있었기 때문에 SpringFox Boot Starter를 사용했다. 추가한 후, 다시 빌드를 하고 애플리케이션을 실행했다. 결과는 처참했다. 뜬금 Nu..
JUnit이란? JUnit에 대해 알아보기 전에 우선 TDD에 대해 알아보자. TDD (Teset-driven Development) 테스트 주도 개발에서 사용하지만, 코드의 유지보수 및 운영 환경에서의 에러를 미리 방지하기 위해서 단위별로 검증하는 테스트 프레임워크이다. 단위 테스트 작성한 코드가 기대하는 대로 동작을 하는지 검증하는 절차이다. JUnit Java 기반의 단위 테스트를 위한 프레임워크이다. 어노테이션 기반으로 테스트를 지원하며, Assert를 통하여, (예상, 실제)를 통해 검증한다. 스프링에서의 테스트에 앞서, 순수 자바에서 JUnit 테스트를 진행해보도록 하자. 새로운 인텔리제이의 Gradle 프로젝트를 자바를 기반으로 하여 생성하자. 생성하고 나면 자동으로 org.junit.jupiter와 같이 ..
AOP AOP는 Aspect Oriented Programming이라고 하며 관점 지향 프로그래밍이라고 한다. AOP는 여러 개의 핵심 비즈니스 로직 외에 공통으로 처리되어야 하는 로그 출력, 보안 처리, 예외 처리와 같은 코드를 별도로 분리해서 하나의 단위로 묶는 모듈화의 개념으로 생각할 수 있다. 쓰이는 곳에 필요할 때 연결함으로써, 유지보수 혹은 재사용에 용이하도록 프로그래밍한다. 스프링 애플리케이션은 대부분 특별한 경우를 제외하고는 MVC(Model, View, Controller) 웹 애플리케이션에서는 Web Layer, Business Layer, Data Layer로 정의한다. - Web Layer : REST API를 제공하며, Client 중심의 로직을 적용한다. - Business Layer ..
[Python] 덩치 #7568 문제 우리는 사람의 덩치를 키와 몸무게, 이 두 개의 값으로 표현하여 그 등수를 매겨보려고 한다. 어떤 사람의 몸무게가 x kg이고 키가 y cm라면 이 사람의 덩치는 (x, y)로 표시된다. 두 사람 A 와 B의 덩치가 각각 (x, y), (p, q)라고 할 때 x > p 그리고 y > q 이라면 우리는 A의 덩치가 B의 덩치보다 "더 크다"고 말한다. 예를 들어 어떤 A, B 두 사람의 덩치가 각각 (56, 177), (45, 165) 라고 한다면 A의 덩치가 B보다 큰 셈이 된다. 그런데 서로 다른 덩치끼리 크기를 정할 수 없는 경우도 있다. 예를 들어 두 사람 C와 D의 덩치가 각각 (45, 181), (55, 173)이라면 몸무게는 D가 C보다 더 무겁고, 키는 C가 더 크므로, "덩치"로만 볼..