일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- AWS
- AWS Certificate
- AWS 자격증
- container
- GKE
- Reverse Proxy
- Solution Architect Certificate
- kubernetes
- Google Cloud Platform
- Solution Architect
- Kubernetes Engine
- Google Cloud
- Compute Engine
- 리버스 프록시
- VPC
- Amazon Web Service
- ansible
- AWS Solution Architect
- Cloud Storage
- playbook
- Cloud Bigtable
- 앤서블
- Cloud SQL
- Google Cloud Platorm
- Cloud Datastore
- gcp
- Cloud Spanner
- AWS Database
- Google Cloud Platrofm
- 아마존웹서비스
- Today
- Total
목록오늘도 안녕 (79)
sungwony
대안은 무엇인가? SRP(단일 책임 원칙)와 DIP(의존성 역전 원칙) 부터 시작해보자 단일 책임 원칙 일반적 해석 하나의 컴포넌트는 오로지 한 가지 일만 해야 하고, 그것을 올바르게 수행해야 한다 실제적 정의 컴포넌트를 변경하는 이유는 오직 하나뿐이어야 한다 아키텍처에서는? 컴포넌트를 변경할 이유가 한 가지라면 어떤 다른 이유로 소프트웨어를 변경하더라도 이 컴포넌트에 대해서는 전혀 신경 쓸 필요가 없다는 것 이것은 의존성에 의해 너무도 쉽게 깨진다 부수효과에 관한 이야기 컴포넌트의 부수효과로 인해 소프트웨어를 변경하는데 더 많은 비용이 지불된다 의존성 역전 원칙 계층 간 의존성은 항상 다음 계층인 아래 방향 영속성을 변경 → 도메인도 함께 변경된다 의존성을 어떻게 제거할 수 있을까? 의존성 역전 원칙 ..
계층 구조 Q. 계층형 아키텍처의 문제점은 무엇인가? 코드에 나쁜 습관이 스며들기 쉽다 시간이 지날수록 소프트웨어를 변경하기 어렵다 계층형 아키텍처는 데이터베이스 주도 설계를 유도한다 모든 것이 영속성 계층을 토대로 만들어진다 애플리케이션의 목적 비즈니스를 관장하는 규칙, 정책을 반영한 모델을 생성해 편의성을 높이는 것 상태(state)가 아니라 행동(behavior)을 중심으로 모델링한다 행동이 상태를 바꾸는 주체 그런데 왜? 도메인 로직이 아닌 데이터베이스를 토대로 아키텍처를 만드는가 우리는 도메인 로직을 먼저 만들어야 한다 그래야 우리가 만드는 로직을 제대로 이해했는지 확인할 수 있다 그리고 이를 기반으로 영속성 계층과 웹 계층을 만들어야 한다 ORM이 원인이다? ORM에 의해 관리되는 엔티티들은 ..
계층형(layered) 아키텍처 스타일의 단점 클린 아키텍처 육각형 아키텍처(Hexagonal Architecture) 도메인 중심 아키텍처의 장점 → 이후 육각형 아키텍처의 실습 학습 목표 계층형 아키텍처를 사용했을 때의 잠재적인 단점 아키텍처 경계를 강제하는 방법 잠재적인 지름길(?)들이 소프트웨어 아키텍처에 어떤 영향을 미칠 수 있는지 언제 어떤 스타일의 아키텍처를 사용할 것인지 아키텍처에 따른 코드 구현 아키텍처의 각 요소들을 포함하는 다양한 종류의 테스트 예제 코드 GitHub - wikibook/clean-architecture: 《만들면서 배우는 클린 아키텍처》 예제 코드 서문 클린 아키텍처 이론은 알겠지만?! → 선행 공부 했어야 하나? 클래스 간의 의존관계가 어느 정도로 허용되어야 하는지..
JAVA8의 parallelStream은 멀티스레드 프로그래밍을 간편하게 해준다. 개발자가 직접 스레드 혹은 스레드풀을 생성하거나 관리할 필요없이 parallelStream(), parallel()만 사용하면 알아서 ForkJoinFramework를 이용하여 작업들을 분할하고 병렬적으로 처리하게 된다. 이번에 조회가 오래 걸리는 시스템을 개선하면서 조회 서비스를 다음과 같이 처리하였다. public class StreamUtils { private static final int PARTITION_SIZE = 100; public static List getResultParallel(List parameter, Function mapper){ if (parameter == null || parameter...
리액티브 프로그래밍이란? 여러 API를 취합해서 전달해야 하는 시스템에서는 각 API들의 경과 시간 전체 합산 시간만큼 필요하지만 반대로 리액티브로 진행할 경우 여러 API 중 가장 긴 경과 시간이 전체 시간 - 데이터 흐름과 전달에 관한 프로그래밍 패러다임 - 데이터 스트림과 변경 사항에 대한 전파(Propagation)를 중심으로 하는 프로그래밍 패러다임 - 데이터가 통지될 때마다 관련 프로그램이 반응(Reaction)해 데이터를 처리하는 방식으로 데이터를 직접 가져와 처리(PULL)하는 것이 아니라 보내온 데이터(PUSH)를 받은 시점에 반응해 이를 처리하는 방식이다. - 함수형 프로그래밍과 유사한 선언적 코드(declarative code)를 사용하여 비동기 처리 파이프라인을 생성할 수 있는 새로..
이 포스트는 SNU에서 제공하는 운영체제의 기초 강의를 개인 학습용으로 정리한 포스트입니다 Agenda 프로세스 개념 프로세스 스케쥴링 컨텍스트 스위칭 프로세스 생성과 종료 멀티스레딩 결론 프로세스의 개념 - 프로세스는 무엇이며 왜 필요한가? 프로세스는 원인과 결과를 귀속시키는 대상 = 프로세스는 OS상에서 프로그램을 실행시키는 기본 주체 = 런타임 시스템의 수행 주체 = CPU 등 자원을 할당 받는 주체 (OS에서 프로세스는 가장 중요한 단위다) ※ Decomposition : "복잡한 문제를 단순한 여러 개의 문제로 나누어 처리하는 방법론" => 프로세스는 수행의 주체이면서 복잡한 문제를 단순화 시킬 수 있는 주체 프로세스를 한마디로 정의하면 'Program in execution(수행중인 프로그램)..
이 포스트는 SNU에서 제공하는 운영체제의 기초 강의를 개인 학습용으로 정리한 포스트입니다 컴퓨터 시스템의 기본 요소 : CPU, Memory, I/O Device 하드웨어의 요소를 연결하는 장치 : System Bus I/O Device는 자신과 Bus간의 Controller가 존재(Controller가 CPU를 대신해서 I/O Operation을 관장) System Bus - CPU와 Memory, CPU와 I/O Device, Memory와 I/O Device간의 데이터 전송을 담당 - Data Bus - Data 정보를 전달 - Address Bus - Data의 Source와 Destination을 지정하는 것이 Address - Address 정보는 Address Bus에 의해 전달 - Bus..
이 포스트는 SNU에서 제공하는 운영체제의 기초 강의를 개인 학습용으로 정리한 포스트입니다 강의 목표 사용자를 위한 연결된 멀티미디어 서비스를 제공하는 OS의 특징을 익힌다 Phase3 : 90년대 중반 ~ 현재 인터넷이 선택이 아닌 필수로 변하였다 개인용 PC의 커다란 성능의 향상을 이루었다 멀티미디어 제공이 과거보다 매우 중요하여짐 Downloading과 Streaming Downloading은 전체 데이터를 확보한 다음에 작업을 실행할 수 있음 Streaming은 일부 데이터만을 확보하여도 작업을 실행할 수 있음 스케줄링 방식의 변화 중요한 일을 먼저 처리해주는 우선순위 기반 스케줄링에서 Continuous Media를 원활하게 처리하기 위한 Bandwidth 스케줄링으로 변화 : proporti..
이 포스트는 SNU에서 제공하는 운영체제의 기초 강의를 개인 학습용으로 정리한 포스트입니다 강의 목표 주요한 OS 기능을 배우고 실습한다 OS 내부의 상호작용을 이해한다 더 나은 소프트웨어 개발 혹은 새로운 OS 디자인에 지식을 접목한다 1. OS의 발전 과정 50년대 초반 ~ 60년대 중반 60년대 중반 ~ 90년대 중반 90년대 중반 ~ 현재 Phase1 : 50년대 초반 ~ 60년대 중반 최초의 OS 등장의 배경 하드웨어는 매우 고가의 장비이고 인건비는 상대적으로 저렴하였다 (대표적인 컴퓨터로 팬실베니아의 애니악이 존재) 값 비싼 하드웨어를 효과적으로 활용할 필요가 있었다 Operator(사람)는 다음과 같은 역할을 수행하였다 1. 사용자로부터 카드 덱을 수령 2. 카드 덱을 컴퓨터 시스템에 로딩하..
이 글은 Udemy의 AWS Certified Solutions Architect - Associate 2019 강의를 개인 학습용도로 정리한 글입니다 Lambda Lambda는 완전한 추상 레이어이다. AWS Lambda는 코드를 업로드하고 Lambda Function을 생성할 수 있는 컴퓨터 서비스이다. AWS Lambda는 코드를 실행하는데 사용하는 서버를 관리하고 프로비저닝 하는 것을 관리한다. 사용자는 운영체제나 패치, 스케일링 등을 걱정할 필요가 없다 Lambda를 사용하는 방식 - Event-Driven 서비스에서 AWS Lambda가 이벤트의 응답으로 코드를 실행. 이런 이벤트들이 Amazon S3 Bucket 또는 Amazon DynamoDB 테이블의 데이터로 변환된다 - Amazon A..