일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 비트마스크
- docker
- 이펙티브 자바
- Redis
- JPA
- pandas
- equals
- BFS
- 헥사고날 아키텍처
- 스프링
- 문자열
- 위상정렬
- 자바
- series
- disjoint set
- 알고리즘
- 세그먼트 트리
- spring security
- 백준
- 데이터 flow
- dfs
- springboot
- 파이썬
- 포트앤어댑터 아키텍처
- dataframe
- ddd
- UML
- DP
- java
- 다익스트라
- Today
- Total
목록C.S 지식정리 (7)
코딩못하는사람

들어가며 사내에서 진행하는 새로운 프로젝트를 진행하였는데요, '새롭게 발생하는 요구사항에 빠르게 대응하기 위해 확장성 있게 설계하자'는 목표가 있었습니다. 따라서 목표에 맞게 팀 스터디 때 리서치했던 "헥사고날 아키텍처"를 적용해보는 경험을 해보았고, 아키텍처에 관해 리서치한 부분 간단하게 정리해보았습니다. 헥사고날 아키텍처란? - 사전적 의미로는 ”육각형 건축물”을 의미합니다. - 소프트웨어 설계에 사용되는 아키텍처 패턴중 하나로 여러 소프트웨어 환경에 쉽게 연결할 수 있도록, 느슨하게 결합된 애플리케이션 구성요소를 만드는 것을 목표로 하는 아키텍처입니다. - 도메인의 비즈니스 로직을 외부 라이브러리 및 툴로부터 분리 할 때 포트와 어댑터라고 부르는 인터페이스를 사용하기 때문에 포트&어댑터 아키텍처라고..

NoSQL이란? 정형 데이터가 아닌 반정형,비정형화 데이터가 빠르게 늘어나면서 빅데이터와 클라우드 환경에서 기존 RDBMS로 트래픽을 감당하기 어려워졌다. 그에 따라 스키마를 유연하게 만들고, 작업의 완전성을 보장해주는 ACID 기능을 희생하여 뛰어난 확장성이나 성능의 특성을 가진 비관계형,분산 데이터 베이스들을 보편적으로 NoSQL이라고 한다. 기존 RDBMS와의 차이점 1. 관계형 모델을 사용하지 않으며 테이블간의 조인 기능 없음 -조인할 필요 없이 이미 모든 값을 가지고 저장된다. 2. 확장성, 가용성, 높은 성능 3. 대부분 여러 대의 데이터베이스 서버를 묶어서(클러스터링) 하나의 데이터베이스를 구성 4. 관계형 데이터베이스에서는 지원하는 Data처리 완결성(Transaction ACID 지원) ..

1.문제점 AWS 프리티어 EC2는 정말 고마운 서비스이기도 하지만, 무료이니 만큼 성능이 나오지 않는다. 프로젝트 jar 파일 빌드할때마다 서버가 다운되는 경우가 많았고 Docker가 Out-Of-Memory 되는 경우가 많았다. 그렇게 인스턴스를 재부팅할때마다 너무 화가나서 말로만 들었던 scale out을 해보기로 결심했다. 이 프리티어 서비스를 최대한 활용하기 위해 서비스를 세분화하고 여러개의 프리티어 인스턴스에 나누어 올리고 nginx의 로드밸런싱 기능을 통해 부하를 나누는 분산 아키텍쳐를 생각하게 되었다. 2. 아키텍쳐 구상 프로젝트의 첫 아키텍쳐는 nginx의 리버스 프록시 기능을 사용해 nginx가 각각의 request를 받아 각각의 포트로 프록시 해주는 방식으로 구성했다.( nginx안의..

Redis (Remote Dictionary Server)란? 보통 Remote에 있는 In-Memory Data Structure Store (인 메모리 데이터 구조)를 가진 key-value 구조 데이터 관리 시스템이다. 보통 DB는 하드 디스크나 SSD에 저장하여 디스크를 돌며 원하는 자료를 찾기 때문에 상대적으로 많은 시간이 소요된다.하지만 Redis는 메모리(RAM)에 데이터를 저장하기 때문에 용량은 적지만 디스크 스캐닝, 쿼리 없이 데이터를 빠르게 가져올 수 있다. Redis는 크게 String, Set ,Sorted Set, Hash,List 자료구조를 지원한다. 이러한 자료구조를 어플리케이션에 잘 맞춰 활용하면 좋은 성능을 낼 수 있다. Cache란? Cache는 나중에 요청올 결과를 미리..

유스케이스 다이어그램이란? 시스템에서 제공해야 하는 기능이나 서비스를 명세한 다이어그램. 사용자의 관점에서 시스템의 서비스 혹은 기능 및 그와 관련한 외부 요소를 보여준다. 외부에서 본 시스템의 기능을 표현하기 때문에, 실제 내부의 비즈니스 로직이 아닌, 사용자가 수행하는 기능을 파악하고 싶을 때 작성한다. 사용목적 고객과 개발자가 요구사항에 대한 의견을 조율 프로젝트에 대한 요구사항을 정의하고 세부기능을 분석하여 개발 범위 정립 구성요소 유스케이스 다이어그램은시스템(System), 액터(Actor), 유스케이스(Usecase), 관계(Relation)로 구성되어 있다. 1.System 만들고자 하는 프로그램 명칭을 나타낸다. 유스케이스들을 둘러싼 사각형 틀로 시스템 명칭을 안쪽 상단에 작성. 2.Act..

UML(Unified Modeling Language) 이란? UML은 프로그램 설계를 그림으로 알아보기 쉽게 표현하기 위해 정의한 표기법이다. 객체지향 언어와 밀접하게 관련있기 때문에 객체지향 모델링 언어라고도 한다. 소프트웨어 시스템,업무 모델링,시스템의 산출물들을 규정하고 시각화하며 문서화하는 언어이다. 프로그래밍 언어가 아닌 모델링 언어이다. (방법론X) UML 작성 이유 의사소통 또는 설계 논의를 위해 전체 시스템의 구조 및 클래스의 의존성 파악을 위해 유지보수를 위한 설계의 back-end 문서 제작을 위해 UML 종류 1.구조 다이어그램(Structure Diagram) 클래스 다이어그램, 객체 다이어그램, 복합체 구조 다이어그램, 배치 다이어그램, 컴포넌트 다이어그램, 패키지 다이어그램 2..

Jmeter 란? Apache JMeter는 웹 애플리케이션처럼 클라이언트-서버 구조로 된 소프트웨어의 성능 테스트를 위해서 만들어진 자바 오픈소스이다 프로토콜(Protocol)도 계속 추가되어 TCP, HTTP(S), FTP, JDBC, LDAP, SMTP, SAP/XML, RPC 등 현재 범용으로 사용되는 프로토콜 대부분을 지원한다. 주요 설정 1.Thread Group JMeter에서 다양한 하위 Element 항목들을 제어하기 위한 시작점이다. Thread Group을 생성하면 부하 테스트 수행 시 원하는 항목들로 변경하기 위한 설정항목들이 나온다. Number of Threads(users) : Single Thread 수로 사용자 수를 의미 Ramp-Up Period(in seconds) : ..