본문 바로가기

반응형

분류 전체보기

(247)
[Spring] Spring Framework 개념 정리 Spring Framework Overview Spring은 자바 엔터프라이즈 애플리케이션의 생성을 간단하게 해주는 프레임워크이다. 자바 언어 기반 뿐만 아니라 Groovy와 Kotlin을 JVM 환경에서 개발하기 위한 기능을 제공해준다. Spring Framework 특징 1. Ioc Container 스프링은 IoC 개념 기반으로 설계되었다. IoC (Inversion of Control)는 제어의 역전이라는 뜻으로 DI (Dependency Injection) 으로도 알려져 있다. 해당 개념은 객체 생성자 인자 또는 인스턴스 프로퍼티 설정 등의 방법 만을 통해서 그들의 의존성을 정의한다. 그리고 컨테이너는 bean이 생성될 때 정의된 의존성을 주입시켜준다. 이러한 과정을 통해서 컨트롤의 제어 주도권..
[Python] Python 병렬처리 - threading (2) [threading - Thread-based parallelism] ■ Thread Objects Thread class는 개별 제어 thread에서 실행하는 활동을 나타낸다. thread가 실행할 활동은 run() 메소드를 override 하거나 callable object를 전달하여 설정할 수 있다. ( override 시에는 __init__과 run() 메소드만 override 해야한다.) 각 thread의 활동을 시작하도록 하기 위해서는 start() 메소드를 호출한다. start 메소드는 thread의 run() 메소드를 실행시킨다. thread가 활동을 시작하면 alive 상태가 되는데, run() 메소드가 종료되거나 예외 발생 시에 alive 상태가 해제된다. alive 상태는 is_ali..
[Python] Python 병렬처리 - threading (1) [threading - Thread-based parallelism] threading 모듈은 _thread 모듈 위에 high-level threading interface를 구축하는 모듈이다. ■ Cpython implementationo detail CPython에서는 GIL로 인해서 하나의 파이썬 코드에서 하나의 스레드밖에 사용할 수 없다. 그렇기 때문에 멀티 코어의 연산자원을 효율적으로 사용하기 위해서는 multiprocessing이나concurrent.futures.ProcessPoolExecutor를 사용하는 것이 좋다. 반면에 I/O 병목 작업을 동시에 작업하는 경우에는 threading을 사용하는 것이 유리하다. ■ threading functions threading.active_cou..
[NATS] NATS 개념 정리 NATS 란? NATS 란 오픈소스 메세지 큐 서비스의 한 종류로 메인 서버는 Go 언어로 구현되어 있고, 클라이언트들은 다양한 언어에 대한 라이브러리들을 지원해주고 있다. 기본적으로 Publisher와 Subscriber로 구성되어 있으며 인코딩 된 메세지를 publisher가 송신하면 하나 또는 여러 개의 subscriber에 의해서 수신되고 디코딩 되어진다. NATS는 환경, 언어, cloud / on-premise 시스템 등 프로그램 간의 서로 다른 환경에 상관없이 쉽게 통신할 수 있도록 구현되어 있다. Client들은 URL을 통해서 서버에 접속하고, subject를 통해 메세지를 전송한다. NATS 서버는 at most once의 QoS를 제공한다. 만약 특정 subject에 대한 subscr..
[Python] Asterisks(*) in Python 파이썬 예제들을 찾아보던 중에 **option과 같은 문법을 발견하였다. 마치 c언어의 포인터와 같이 변수의 앞에 위치하고 있는 asterisk의 의미에 대해서 조사하면서 이외에 파이썬에서 asterisk를 사용하는 방법들에 대해서 살펴보았다. 1. 곱셈, 거듭제곱 연산 기본적으로 곱셈을 위한 연산자로 *를 많이 사용한다. 2 * 5# 10 또한 asterisk를 두개 붙여 사용하여서 거듭제곱 연산자로 사용한다. 2 ** 3# 8 4 ** 2# 16 2. iterable arguments의 unpacking 함수의 argument로 iterable한 값이 입력되었을 때 *를 사용해서 unpacking 할 수 있다. fruits = ['lemon', 'pear', 'watermelon', 'tomato']..
[Docker] 도커 개념 정리 Docker 도커는 어플리케이션의 개발, 실행 관리 등을 할 수 있도록 해주는 오픈 플랫폼이다. 주로 개발 환경을 관리하는 가상 환경과 같은 플랫폼으로 개발 인프라를 관리하는데에 사용한다. 도커를 사용하여 개발 인프라를 관리하고 이를 기반으로 개발, 배포 등을 진행하여 사용자의 인프라에 상관없이 어플리케이션을 실행할 수 있도록 한다. The Docker platform 도커는 컨테이너라고 부르는 독립된 환경을 통해서 어플리케이션을 패키징하고 실행할 수 있다. 컨테이너를 사용하여서 현재 로컬의 환경과는 상관없이 어플리케이션 실행에 필요한 독립된 개발환경을 구축할 수 있다. 또한 구축된 컨테이너를 공유, 배포할 수 있다. What can I use Docker for? ■ application CI/CD -..
[Python] 비동기 프로그래밍 (asyncio) ■ Synchronous vs Asynchronous - Synchronous programming (동기 프로그래밍) : 주어진 task들을 순차적으로 실행하는 프로그래밍 방식. 하나의 작업이 수행중이면 그 다음 작업은 수행 완료까지 대기한다. - Asynchronous programming (비동기 프로그래밍) : task들을 병렬적으로 수행하는 프로그래밍 방식. 먼저 실행된 작업이 완료되지 않아도 다음 작업이 대기하지 않고 수행된다. ■ Event Loop 이벤트 루프는 작업들을 루프(반복문)를 돌면서 하나씩 실행시키는 역할을 합니다. 만약 실행된 작업이 특정한 데이터를 요청하고 응답을 기다려야 한다면, 이 작업은 다시 이벤트 루프에 통제권을 넘겨줍니다. 통제권을 받은 이벤트 루프는 다음 작업을 실..
[MQ] Message Queue란? Message Queue란? MOM (Message Oriented Middleware)를 구현하여 서버와 클라이언트 사이의 통신을 비동기 메시지 처리 방식으로 처리하는 시스템이다. 서버와 클라이언트 사이의 통신에서 이미지 처리, 비디오 인코딩, 대용량 데이터 처리 등과 같이 리소스의 소모가 큰 데이터 통신을 진행해야 하는 경우 처리할 수 있는 양이 한정되어있기 때문에 요청의 지연이나 손실, 서버의 다운 등이 발생할 수 있는데, MQ 서비스는 서버와 클라이언트 사이의 미들웨어로 비동기 메시지를 사용하여서 이런 통신들을 처리하는데 사용합니다. 기존에 분산되어있던 데이터 처리를 MQ의 Message Broker 한 곳에서 처리하도록 두어서 로드밸런싱과 MQ clustering 기능 등을 사용하여서 작업을 분..

반응형