내블로그 | 랜덤블로그 쪽지
.
https://blog.yes24.com/rudfla4015
리스트 | RSS
태그 & 테마링 | 방명록
게으른독자
.
프로필 쪽지 친구추가
9월 스타지수 : 별125
전체보기
IT 이슈
IT 용어 정리
도서 분석
출판 공부
스크랩
기타
나의 리뷰
IT도서 리뷰
다른 도서 리뷰
태그
도메인주도설계 유비쿼터스언어 마이크로서비스 노션업데이트 노션인공지능노션AI 노션포트폴리오 올해의책올해의책투표 yes24북클럽이용권 북클럽무료이용권예스24북클럽이용권 서버리스
나의 친구
친구!
yes24
최근 댓글
내용이 없습니다.
새로운 글

IT 용어 정리
도메인 주도 설계(DDD; Domain Driven Design)의 개념 | IT 용어 정리 2022-11-30 13:39
https://blog.yes24.com/document/17208021복사Facebook 보내기 트위터 보내기

요즘 꽂혀있는 DDD에 대해 몇 자 적어보았읍니다. (^_?)

1. 도메인

소프트웨어를 구현할 때 해결하고자 하는 문제 영역

2. 객체지향

모든 데이터를 오브젝트로 취급함

하나하나의 부품을 모아 컴퓨터를 조립하는 것처럼 객체를 모아 하나의 프로그램 생성

3. 도메인 주도 설계(DDD) : 도메인을 서비스 별로 분리하라

기존 소프트웨어 설계 단계를 보면 도메인을 설정하고 도메인을 추상화하여 모델링을 합니다.

모델링을 보고 실체화하면 소프트웨어가 구현됩니다.

이 과정에는 도메인 전문가의 파트와 개발자의 파트가 나누어집니다.

도메인 전문가는 도메인~모델링까지의 과정을 수행하고, 개발자는 모델링~구현까지의 과정을 수행하게 되는데,

서로의 소통 방식이 다르기 때문에 처음 도메인 전문가가 기획한 모델링 의도와는 다른 소프트웨어로 구현되는 경우가 종종 있습니다.

이것을 예방하고자 나타난 개념이 바로 ‘DDD’입니다.

DDD는 도메인 모델의 적용 범위를 구현까지 확장시켜 도메인 지식을 구현 코드에 바로 적용하여 의사소통의 불일치를 예방하고

추후 유지 보수에도 효율적입니다.

⇒ 도메인 전문가와 개발자가 서로 이해할 수 있는 동일한 표현과 단어로 구성된 단일화된 언어체계(유비쿼터스 언어)를 구축하는 과정

또한 도메인 주도 설계를 활용하면 소프트웨어의 비즈니스 상 우선순위에 따라

서브 도메인으로 나눠서 관리할 수 있습니다.

* 도메인 주도 설계의 특징

  • 같은 객체(Object or Class)가 여러 개 존재할 수 있음 → 문맥에 따라 객체의 역할이 바뀐다(Bounded Context-도메인 영역의 경계)

  • 전략적 설계와 전술적 설계로 나누어짐

- 전략적 설계 : 유티쿼터스 언어를 통해 도메인 지식을 공유하고, 이를 기준으로 바운디드 컨텍스트로 정의한 후 컨텍스트 맵으로 정의하는 것

- 전술적 설계 : 전략적 설계에서 만들어진 바운디드 컨텍스트와 도메인으로 애그리거트 패턴, 엔티티와 값 객체, 레포지토리 등을 구성하는 것

도메인 주도 설계 기법이 정의된 것은 10년 전쯤이지만, 그동안 큰 관심을 못 받다가

최근 클라우드 환경으로 전환되기 시작하면서 클라우드 마이크로서비스 아키텍처에 적합한

애플리케이션 개발을 위한 설계 기법으로 다시 주목받고 있습니다.


 

4. 마이크로서비스(Micro Service)

 

하나의 애플리케이션을 작게 쪼개서 변경과 조합이 용이하도록 만든 아키텍처

모놀리식 아키텍처의 경우 서비스 규모가 커지면서 복잡도가 증가할수록 작은 서비스의 장애가 전체 서비스 장애로 확대될 수도 있고,

부분 서비스 변경에도 어려움이 많기 때문에 마이크로서비스가 등장하게 되었습니다.

  • 독립적인 단위의 서비스로 존재하기 때문에 변경이 용이

  • 하나의 서비를 변경할 때의 영향력이 적음

  • 개별 단위의 서비스 배포 가능

  • 배포 시 전체 서비스 중단 x

  • 전체 애플리케이션 스케일 아웃이 필요 없어서 불필요한 자원의 낭비를 줄일 수 있음

더 자세히 살펴보고 싶다면 도메인 주도 설계를 정의한 에릭에반스의 문서를

아래 링크로 다운로드해 볼 수 있습니다.

 Domain Driven Design Quickly

Domain Driven Design is a vision and approach for designing a domain model that reflects a deep understanding of the business domain. This book is a short, quickly-readable summary and introduction to the fundamentals of DDD; it does not introduce any new concepts; it attempts to concisely summarize...

www.infoq.com


참고

https://martinfowler.com/tags/domain%20driven%20design.html

https://huisam.tistory.com/entry/DDD

https://youtu.be/VIfNipL5KkU

https://aws.amazon.com/ko/microservices/

https://programmingpercy.tech/blog/how-to-domain-driven-design-ddd-golang/

이 글이 좋으셨다면 SNS로 함께 공감해주세요.
댓글(0) 트랙백(0)
이 포스트를 | 추천 0        
서버리스(Serverless)의 개념 | IT 용어 정리 2022-11-08 09:31
https://blog.yes24.com/document/17113433복사Facebook 보내기 트위터 보내기

클라우드가 보편화되면서 많은 편리함이 생겼지만, 여전히 서버의 소프트웨어적인 부분은

사용자가 직접 관리를 해야 하고, 온디맨드 서비스를 이용하더라도 사용하지 않는 가동시간에도 요금을 부과하는 클라우드 서비스들이 많이 있다.

이러한 단점을 보완하기 위해 만들어진 것이 서버리스이다.

서버리스

언뜻 보면 서버가 없다는 뜻인가?라고 착각할 수 있지만, 서버가 없다는 뜻은 아니다.

실제로는 서버가 존재하지만, 직접 서버를 관리하지 않아서 서버를 신경 쓸 필요가 없는 환경을 뜻한다.

-> 서버를 직접 관리할 필요가 없는 아키텍처

하드웨어적인 관리 측면의 부담을 줄여 코딩에만 집중할 수 있게 해준다.

-> 민첩성을 높이고 비용을 줄일 수 있다.

필요한 컴퓨팅 리소스와 스토리지만 동적으로 할당한 다음 그 부분에 대해서만 비용을 청구하는 클라우드 실행 모델로써, 스케일링, 업데이트, 보안과 같은 런타임 관리와 운영에 대한 시간 소모가 필요하지 않아서 이전보다 제품 자체에 집중할 수 있게 된다.

하지만 장점만 있는 것은 아니다

대표적인 단점으로는

콜드 스타트, 단순 작업에만 최적화, 로컬 데이터 사용의 불편함(Stateless), 클라우드 플랫폼에 종속적인 것이 있다.

* 콜드 스타트 : 데이터가 없는 시작 상태에서는 제대로 동작하지 않는 시스템

이 외에도 실시간 서비스에 적용하기 어렵다.

항상 실행 중인 서버와 다르게, 트리거에 의해 서버를 실행하고 종료하기를 반복하는 서버리스는 실행 대기 시간이 오래 걸리기 때문에 실시간으로 반응해야하는 서비스에는 적용하기 어렵다.

+ 마이그레이션, 디버깅이나 테스팅 불편

단점도 많이 있지만, 사이드 프로젝트나 빠른 프로토타입 출시에 최적화, 비용감소 등의 장점으로

서버리스 시장은 무섭게 성장하고 있는 추세이다.

  • 구현방식은 BaaS, FaaS

  • BaaS : Firebase, Kinvey ...

  • FaaS : AWS, Azure, Google..

서버리스 컴퓨팅 및 애플리케이션 | Microsoft Azure

Serverless Architecture- Why and How It’s a Smart Choice? - (systango.com)

이 글이 좋으셨다면 SNS로 함께 공감해주세요.
댓글(0) 트랙백(0)
이 포스트를 | 추천 1        
카카오 데이터 센터 화재와 관련한 IT 지식 | IT 용어 정리 2022-10-17 09:37
https://blog.yes24.com/document/17019973복사Facebook 보내기 트위터 보내기

1. 데이터 : 통신과 해석, 처리로 형식화된 사실과 개념, 명령을 표현한 것으로 특정 목적에 따라 형식이 다름

 

2. 데이터 센터 : 컴퓨터 시스템이 인터넷이나 네트워크에 연결되도록 보장하는 데 필요한 네트워킹 장비와 하드웨어가 있는 곳, 기업의 IT 운영의 핵심적인 역할을 함

 

3. 데이터 센터의 요소

  • 네트워킹 장비 : 라우터, 스위치, 제어기, 방화벽 등

  • 스토리지 : 기본/백업 스토리지 디바이스

  • 컴퓨팅

  • 전원 공급 장치 : 대형 발전기와 같은 장치

  • 케이블링 및 케이블 관리 시스템

위에서 언급한 항목 이외에 하드웨어별 온도,습도를 관리하기 위한 센서와 시스템, 모니터링 시스템 등이 있다.

 

4. 분산 데이터 관리 시스템 : 대규모의 구조화된 데이터를 나눈 다음, 분산해서 저장/관리

(클라우드 데이터를 위한 기술로 활용되고 있음)

 

5. DR(Disaster Recovery) : IDC 장애 시 유일한 장애 복구 솔루션

각 기준별로 분리된 서버들에 대해 부정지 서비스를 가능하게 한다.

데이터의 이중화 구성이 가능해서 갑작스러운 네트워크의 단절, 노드의 불안정, 시스템 다운, 정전 등의 문제를 해결할 수 있음

* IDC(Internet Data Center) : 서버 컴퓨터와 네트워크 회선 등을 제공하는 시설

 

6. DR센터 : 서비스를 운영하고 있는 전산센터를 말하거나, 재해 발생 시 즉각 서비스 복귀를 위한 백업 플랜 인프라 구성을 의미한다.

  • Cold DR : RTO(Real Time Objecetives)가 24시간 이내

  • Warm DR : RTO가 3시간 이내

  • Active DR : RTO가 0, 항상 가용 운영

 

7. DR센터의 필요성 : 특히 금융 IT 서비스를 제공하는 곳이라면 재해 발생 시 운영 시스템의 데이터와 인프라가 즉시 복구되어야 하므로 DR센터가 운영을 적극 권장하고 있다.

 

8. GSLB(Global Server Load Balancing) : 발전된 DNS의 형태

일반적인 DNS의 로드밸런싱은 네트워크 지연, 성능, 트래픽 유입, 서비스 실패 등은 고려하지 않기 때문에 이러한 문제를 해결하기 위한 방안으로 나온 것

DNS는 재해복구가 필요할 때 서버의 상태를 알 수 없기 때문에 서비스를 실패하는 유저들이 생기게 된다.

하지만 GSLB는 서버의 상태(Health Check)를 모니터링하고 있기 때문에 실패한 서버의 IP는 응답에서 제외한다 -> 유저는 서비스를 계속 이용할 수 있게 됨(재난 복구)

+ 서버의 상태를 모니터링하고 있기 때문에 트래픽이 적은 서버의 IP를 알 수 있고, DNS보다 세밀한 로드밸런싱이 가능하다.

  • DNS(Domain Name System) : 사람이 읽을 수 있는 도메인네임을 IP 주소로 변환하는 시스템

  • DDNS : 동적 DNS

  • 로드밸런싱(Load Balancing) : 서버가 처리해야 할 업무를 여러 대의 서버로 분산 시켜 처리하는 것

 

아직도 카카오 서비스에 대한 뉴스와 이슈들이 많이 나오고 있는데,

생소할 수 있는 IT 용어들이 많이 언급되길래

간략하게 정리해 보았다.

 

카카오를 통해서 기업들의 데이터관리에 대한 면모를 알게 되었지만,

사실 생각보다 많은 기업들이 DR센터 이중화를 하고 있지 않다.

이번 일을 통해 DR센터 이중화, 더 나아가 GSLB까지 구축하는 기업들이 많아졌으면 좋겠다.

이 글이 좋으셨다면 SNS로 함께 공감해주세요.
댓글(0) 트랙백(0)
이 포스트를 | 추천 0        
간략한 SQL 정리 | IT 용어 정리 2022-10-14 09:37
https://blog.yes24.com/document/17007763복사Facebook 보내기 트위터 보내기

1. SQL의 정의

- 국제 표준 데이터베이스 언어이며, 관계 대수와 관계 해석을 기초로 한 혼합 데이터 언어이다.

- 질의어이지만, 질의 기능 외에 데이터 구조 정의/조작/제어 기능을 갖추고 있다.

2. SQL의 분류

1) 데이터 정의어 (DDL : Data Define Language)

- 스키마, 인덱스, 도메인, 뷰, 테이블을 정의/변경/삭제 시 사용한다.

- 데이터베이스 관리자나 설계자가 주로 사용한다.

- 논리적 데이터 구조와 물리적 데이터 구조를 정의한다.

 

CREATE

스키마, 도메인, 테이블, 뷰, 인덱스 정의

ALTER

테이블에 대한 정의 변경

DROP

스키마, 도메인, 테이블, 뷰, 인덱스 삭제

 

 

2) 데이터 조작어 (DML : Data Manipulation Language)

- 질의어나 응용프로그램을 통해 저장된 데이터를 실질적으로 처리하는 데에 사용되는 언어이다.

- DB 사용자, DBMS 간의 인터페이스를 제공한다.

 

SELECT

튜플 검색

INSERT

튜플 삽입

DELETE

튜플 삭제

UPDATE

튜플 내용 변경

3) 데이터 제어어 (DCL : Data Control Language)

- 데이터의 보안, 무결성, 회복, 병행 수행 제어 등을 정의하는 데 사용한다.

- DBA가 데이터 관리를 목적으로 사용한다.

 

COMMIT

수행 결과를 물리적 디스크에 저장하고,

DB 작업 완료 내역을 관리자에게 알림

ROLLBACK

작업이 비정상적으로 종료되었을 때 이전 상태로 복구

GRANT

사용자에게 사용 권한 부여

REVOKE

사용자의 사용 권한 취소

이 글이 좋으셨다면 SNS로 함께 공감해주세요.
댓글(0) 트랙백(0)
이 포스트를 | 추천 1        
1
진행중인 이벤트
나의 북마크
이벤트 세상
트랙백이 달린 글
내용이 없습니다.
스크랩이 많은 글
내용이 없습니다.
많이 본 글
오늘 9 | 전체 2635
2022-10-05 개설