분류 전체보기 35

[CLOUD] 서비스 메시 (Service Mesh)

서비스 메시(Service Mesh)란? 서비스 메시는 서비스 간의 통신을 제어하고 표시하고 관리할 수 있도록 하는 데 특화된 마이크로 서비스를 위한 인프라 계층입니다. 기존의 서비스 아키텍처에서의 호출은 직업 호출 방식이었다면, 서비스 메시에서의 호출은 자체 인프라 계층의 proxy간에 이뤄집니다. 서비스 메시를 구성하는 개별 proxy는 서비스 내부가 아니라 각 서비스와 함께 실행되므로 'sidecar'라고도 합니다. 각 서비스에서 분리된 이러한 sidecar proxy들이 모여 Mesh Network를 형성합니다. Mesh Network 마이크로 서비스의 단점 서비스 메시 없이 동작하는 마이크로 서비스는 서비스 간 커뮤니케이션을 통제하는 로직으로 코딩해야 하기 때문에 개발자들이 비즈니스 로직에 집중..

[JAVA] JAVA Thread(스레드) 사용법 & 예제

Thread란? 하나의 프로세스 내부에서 독립적으로 실행되는 하나의 작업 단위 운영체제에 의해 관리되는 하나의 작업(Task) Thread = Task(작업) JVM에 의해 하나의 프로세스가 발생하고 main() 안의 실행문들이 하나의 스레드 main() 이외의 또 다른 스레드를 만들려면 Thread 클래스를 상속하거나 Runnable 인터페이스 구현 멀티 스레드 작업 시, 각 스레드끼리 정보를 주고받을 수 있어 처리 과정의 오류를 줄일 수 있음 프로세스끼리는 정보 교환 불가능 멀티 스레드(Multi Thread)란? 여러 스레드를 동시에 실행시키는 응용프로그램을 작성하는 기법 장점 메모리 공유로 인한 시스템 자원 소모 줄어듬 동시 작업이 가능 단점 자원을 공유하기에 충돌 발생 가능성 존재 로직의 복잡도..

[JAVA] Map 전체 출력(entrySet, keySet, Iterator)

HTML 삽입 미리보기할 수 없는 소스 Map의 값을 전체 출력하는 방법을 알아보겠습니다. 방법1 : entrySet() HTML 삽입 미리보기할 수 없는 소스 key와 value의 값 모두 필요한 경우에 사용합니다. 방법2 : keySet() HTML 삽입 미리보기할 수 없는 소스 key의 값만 필요한 경우에 사용합니다. 방법3 : entrySet().iterator() HTML 삽입 미리보기할 수 없는 소스 iterator 인터페이스를 사용할 수 없는 컬렉션인 Map에서 iterator 인터페이스를 사용하기 위해서는 Map에 entrySet(), keySer() 메소드를 사용하여 Set 객체를 반환받은 후 iterator 인터페이스를 사용합니다. 방법4 : keySet().iterator() HTML..

[OS] 멀티 스레드(Multi Thread) vs 멀티 프로세스(Multi Process)

멀티 스레딩 (Multi Threading) 보통 우리가 작성하는 코드를 실행하면 하나의 프로세스로 동작합니다. 또, 하나의 프로세스는 보통 하나의 스레드만 사용하여 동작합니다. 아래의 파이썬 코드를 통해 알아보도록 하겠습니다. HTML 삽입 미리보기할 수 없는 소스 실행 결과는 다음과 같습니다. process_id : 25939 thread_id : 4539137536 이렇게 하나의 프로세스에서 하나의 스레드만 사용하는 것을 "싱글 스레딩"이라고 합니다. 우리가 작성하는 대부분의 코드들은 이렇게 싱글 스레딩입니다. 반면, 하나의 프로세스에서 여러 개의 스레드를 사용할 수도 있습니다. HTML 삽입 미리보기할 수 없는 소스 실행 결과는 다음과 같습니다. # 같은 프로세스 process_id : 27180..

Computer Science/OS 2022.08.14

[OS] CPU Bound vs I/O Bound

컴퓨터가 수행하는 하나의 작업은 CPU 작업(CPU Bounded Task)과 I/O 작업(I/O Bounded Task)으로 이루어집니다. CPU Bounded Task CPU Bounded Task는 작업 수행 시 I/O보다 CPU를 더 많이 쓰는 작업을 의미합니다. 많은 연산이 필요한 경우 이에 해당하며 예로는 머신러닝이 있습니다. (I/O 작업도 있지만 CPU 사용량이 압도적입니다.) I/O Bounded Task I/O Bounded Task는 작업 수행 시 CPU보다는 I/O 작업이 많은 경우를 의미합니다. 예로는 크롤링, DB 데이터 송수신 등이 있습니다. 일반적으로 웹, WAS 서버는 I/O Bounded한 경우가 많습니다.

Computer Science/OS 2022.08.14

[OS] 병렬성과 동시성

병렬성과 동시성은 한정된 자원(CPU, 메모리)에서 효율적으로 프로세스를 사용하기 위해 생긴 개념입니다. 동시성 동시성은 기본적으로 CPU 1코어를 기준으로 이야기합니다. (실제는 물리적으로 CPU 1개의 코어에서만 동작하는 개념이 아닌, 제한된 자원에서 여러 작업을 한 번에 실행시키려는 논리적 개념입니다.) 이해를 돕고자 컴퓨터 발전의 초기 때를 예로 들어보겠습니다. 컴퓨터 발전 초기에는 컴퓨터 한 대당 CPU는 하나였습니다. 그렇다보니 CPU가 한 번에 처리할 수 있는 명령도 하나였습니다. 만약 이런 상황에서 I/O 작업들이 많아진다면 어떻게 될까요? I/O 작업을 하는 동안 CPU는 대기 상태에 있는 I/O Blocking이 발생하게 됩니다. (이를 CPU 블락 상태라고 합니다.) 만약 이 I/O ..

Computer Science/OS 2022.08.14

[OS] 프로세스(Process)와 스레드(Thread)

프로세스(Process) 프로세스는 운영체제에 의해 연속적으로 실행되고 있는 프로그램을 의미합니다. 프로그램 실행 시 운영체제가 메모리 위에 프로세스를 생성하게 되며 운영체제에 의해 CPU, 메모리 자원을 할당받게 됩니다. 프로세스는 독립된 메모리 영역으로 Code, Heap, Data, Stack을 할당받습니다. Code : 개발자가 작성한 코드 Data : 전역변수, 정적변수, 배열, 구조체 등 프로그램이 실행되면서 생기는 정적인 데이터 Stack : 함수 호출과 관련된 정보(실행정보, 지역변수, 파라미터 등)이 저장됩니다. 일반적으로 컴파일 타임에 Stack의 크기가 결정됩니다. Heap : 런타임에 동적으로 메모리를 처리해야 하는 상황에서 사용되는 공간입니다. ex) Array를 사용하거나 외부 ..

Computer Science/OS 2022.08.13

[Vue.js] Vue.js 기본 - Vue Template

Vue Template Vue의 Template 문법이란, Vue로 화면을 조작하는 방법을 의미합니다. Template 문법은 크게 1. Data Binding, 2.Directive 으로 나뉩니다. Data Binding : Vue Instance에서 정의한 속성들을 화면에 표시하는 방법입니다. Instance의 속성을 연결할 수 있습니다. 기본 구조 : {{data}} Directive : Vue로 화면의 요소를 더 쉽게 조작하기 위한 문법입니다. 화면 조작에서 자주 사용되는 방식들을 모아 Directive 형태로 제공하고 있습니다. 기본 구조 : v- (ex. v-bind, v-if, v-else, v-show, v-on, v-model 등) !-- seen의 진위 값에 따라 p 태그가 화면에 표시..

Framework/Vue.js 2022.07.25

[Vue.js] Vue.js 기본 - Vue Router, Axios

Router Vue Router는 Vue 라이브러리를 이용하여 싱글 페이지 애플리케이션을 구현할 때 사용하는 라이브러리입니다. 페이지 이동 시 사용하는 기능으로, 프로젝트에 Vue Router를 설치하는 방법은 CDN, NPM 2가지 방식이 있습니다. CDN 방식 Axios Axios는 Vue에서 가장 많이 사용하는 Promise 기반 HTTP 통신 라이브러리입니다. CDN과 NPM 설치 방식 모두 지원하며 상대적으로 다른 HTTP 통신 라이브러리들에 비해 문서화가 잘되어 있고 API가 다양합니다. script 코드를 입력하고 라이브러리를 설치합니다. npm install axios axios의 기본구조는 아래와 같습니다. methods: { fetchData: function() { axios.get(..

Framework/Vue.js 2022.07.25

[Vue.js] Vue.js 기본 - Component 통신

Component 통신 방식 - 부모 / 자식 레벨 Vue Component는 각각 고유한 데이터 유효 범위를 갖습니다. 따라서 Component 간에 데이터를 주고 받기 위해서는 아래와 같은 규칙을 따라야 합니다. 자식 Component → 부모 Component : Event 발생 부모 Component → 자식 Component : Props 전달 즉, 자식 Component는 부모 Component에게 Event를 발생시켜 올려줌으로써, 부모 Component는 자식 Component에게 props 속성을 통해 데이터를 전달하게 됩니다. Props 부모 Component → 자식 Component Props를 이용한 예제는 아래와 같습니다. 위의 예제를 쪼개어 본다면 아래와 같습니다. 1. 부모 ..

Framework/Vue.js 2022.07.24
반응형