IT 썸네일형 리스트형 MSA 관심사 - 내부/외부 아키텍처 MSA는 여러 서비스간의 연계를 통해 시스템을 구축하는 SOA의 범주에 있다고 볼 수 있다. (SOA :통합 DB를 쓰면서 엔터프라이즈 서비스에서 모든 동작과 서비스를 제공하는 시스템을 의미함) MSA와 SOA의 가장 큰 차이는 저장소를 같이 쓰는지 각자 쓰는지이다. MSA를 구성하기 위해선 많은 시스템을 구축해야 된다. 각각의 레벨에서 기본적으로 구성해야되는 요소들이 패턴화되어 있고 각 영역의 패턴에 맞춰 사용할 플랫폼을 결정하면 된다. 보통 마이크로서비스 아키텍처를 정의할때 아래의 화면처럼 많이들 표현하고 있다. 마이크로서비스 빌드부터 시스템 구성에 대한 흐름을 아래 화면을 통해 살펴볼 수 있다. [참고자료 및 강좌] https://www.inflearn.com/course/%EC%8B%A4%EB%A.. 더보기 MSA 아키텍처 스타일 이벤트 기반 아키텍처 스타일 MSA의 기본이며 많이 사용되는 아키텍처는 이벤트 기반 아키텍처 스타일이다. 이벤트 기반 아키텍처 스타일은 확장성이 뛰어나고 고성은 애플리케이션 개발에 널리 쓰이는 비동기 분산 아키텍처다. 동기랑 비동기의 차이는 업무 처리 속도이다. 예를 들어 커피숍에 1명이 주문과 커피내리는 행위를 다 한다고 생각하면 1시간 동안 처리할 수 있는 주문량은 매우 적을 것이다. 하지만 주문자와 바리스타를 따로 고용하여 서로 맡은 업무만 처리하도록 하면 훨씬 많은 양의 주문를 받을 수 있고 손님이 몰릴때 상황에 맞게 주문자를 늘리거나 바리스타를 늘려 모든 주문량을 소화할 수 있게 확장할 수도 있을 것이다. 이벤트 기반 아키텍처는 다른 아키텍처에 내장이 가능한다. 그 예로 이벤트 기반 마이크로서비.. 더보기 MSA 개념 마이크로서비스 개념이 나오게 된 배경 서비스 변경 빈도가 잦아지면서 변화된 비즈니스 환경에 민첩하게 대응할 수 있는 구조의 필요성이 높아지면서 그런 구조를 갖춘 아마존의 비즈니스 환경에 대한 관심을 갖게 되었다. 현재 아마존은 MSA 환경 덕분에 요구사항에 즉각적으로 대응할 수 있으며 그 서비스 변경 속도는 대략 11초 밖에 소요되지 않는다. MSA에 가장 기본이 되는 개념은 클라우드 인프라이다. 물리서버는 인프라를 구축하는데 많은 비용과 시간을 투자해야 된다. 하지만 클라우드 인프라는 신규 또는 구축되어 있는 인프라를 구성을 빠르게 진행할 수 있다. 그리고 클라우드 인프라의 또다른 장점은 사용량에 따라 리소스 확보가 가능하다는 점이다. 서버의 리소스를 확장하는 방법에는 두가지가 있다. 수직 확장, 수평.. 더보기 자바 플레이그라운드 with TDD, 클린코드 강좌 후기 Day 3 대표적으로 테스트하기 어려운 코드 1. 내부 API : Random, Shuffle, 날짜 2. 외부 세계 : 외부 Rest API, 데이터베이스 API 테스트 힘든 코드 리펙토링 방법 테스트하기 힘든 코드로 랜덤 값으로 자동자 이동에 대한 단위테스트 케이스를 예시로 보면서 어떻게 작성함으로써 테스트 코드 작성이 가능한지 설명해주셨다. 먼저 아래와 같은 코드는 테스트를 실행할때마다 다른 랜덤 값으로 실행됨으로 결과를 예측하기 어렵고 테스트가 성공한게 맞는지 판단하기 어렵다 다음과 같은 방법으로 코드를 개선할 수 있다. 1. Car 클래스의 move 메소드를 protected 접근자 제한으로 변경 아래와 같이 test 클래스에서 move 메소드를 오버라이딩함으로써 테스트가 가능하다. 2. Car 클래스의 .. 더보기 자바 플레이그라운드 with TDD, 클린코드 강좌 후기 Day 2 학습 목표 : TDD 기반으로 프로그래밍법 메소드 분리 + 클래스를 분리 & 점진적으로 리팩토링하는 경험을 학습하고자 한다. 경험할 객체지향 생활 체조 원칙 규칙 1: 한 메서드에 오직 한 단계의 들여쓰기만 한다. 규칙 2: else 예약어를 쓰지 않는다. 규칙 3: 모든 원시값과 문자열을 포장한다. 규칙 5: 줄여쓰지 않는다(축약 금지). 규칙 8: 일급 콜렉션을 쓴다. Clean Code 가이드 의미 있는 이름 의도를 분명히 밝혀라 그릇된 정보를 피하라 서로 흡사한 이름을 사용하지 않도록 주의한다. 유사한 개념은 유사한 표기법을 사용한다. 의미 있게 구분하라 인터페이스 클래스와 구현 클래스 인터페이스 이름은 접두어를 붙이지 않는 편이 낫다고 생각한다. 오히려 인터페이스를 ShapeFactory로 이름.. 더보기 자바 플레이그라운드 with TDD, 클린코드 강좌 후기 Day 1 학습 목표 : 넥스트스텝 강좌 중 TDD 교육을 들으면서 앞으로 매주 코딩 연습을 하고자 한다. 2️⃣ 숫자야구게임 구현 기능 요구 사항 기본적으로 1부터 9까지 서로 다른 수로 이루어진 3자리의 수를 맞추는 게임이다. 같은 수가 같은 자리에 있으면 스트라이크, 다른 자리에 있으면 볼, 같은 수가 전혀 없으면 포볼 또는 낫싱이란 힌트를 얻고, 그 힌트를 이용해서 먼저 상대방(컴퓨터)의 수를 맞추면 승리한다. e.g. 상대방(컴퓨터)의 수가 425일 때, 123을 제시한 경우 : 1스트라이크, 456을 제시한 경우 : 1볼 1스트라이크, 789를 제시한 경우 : 낫싱 위 숫자 야구 게임에서 상대방의 역할을 컴퓨터가 한다. 컴퓨터는 1에서 9까지 서로 다른 임의의 수 3개를 선택한다. 게 임 플레이어는 컴퓨.. 더보기 Docker Compose를 이용하기 docker-compose.yml 파일을 통해 별도의 도커 명령어를 모르더라도 docker-compose up 명령어를 통해 한번에 원하는 환경을 만들 수 있다. 위 그림과 같이 클라이언트인 웹 브라우저가 있고 워드프레이스인 웹서버와 mysql DB 서버가 존재한다고 생각하고 도커를 통해 구축해보자. 아래 주소에 있는 docker 명령어와 compose 파일을 참고해서 스터디하고자 한다. https://gist.github.com/egoing/b62aa16573dd5c7c5da51fd429a5faa2 docker-compose.md GitHub Gist: instantly share code, notes, and snippets. gist.github.com [Docker 명령어] [Docker Comp.. 더보기 Docker Push (DockerHub, GitHub) 도커 이미지를 다른 사람과 공유하기 위해서 push를 통해 저장소인 docker hub 또는 git hub에 올릴 수 있다. Docker 공유하기 (Push) 1) 도커 허브에 로그인 또는 회원가입을 한 뒤 Repository를 생성한다. 2) 예시로 python3으로 만들면 아래 화면처럼 도커를 Push 할 예시 화면을 확인 할 수 있다. 3) 그럼 예시로 ubuntu OS에 Python3를 설치한 이미지를 도커 허브에 Push해보자 #ubuntu 이미지를 다운받는다. docker pull ubuntu #ubuntu 이미지를 실행 후 바로 명령어를 입력할 수 있게 옵션 -it으로 실행 (실행 이미지 이름은 my-python) docker run -it --name my-python ubuntu #apt.. 더보기 이전 1 2 3 4 5 ··· 7 다음