목록분류 전체보기 (341)

수학과의 좌충우돌 프로그래밍

[DevOps] Reverse Proxy vs Load Balancer, 리버스 프록시 vs 로드 벨런서

서버 아키텍쳐를 공부하던 중에 비슷한 두 개의 개념을 접하게 되었습니다. 리버스 프록시와 로드 밸런서. 얼핏 봐서는 두 개념이 비슷해보이고 명확하게 구분이 안되서 각각에 대해서 정리하고 두 개의 차이점을 알아보도록 하겠습니다. Reverse Proxy 우선 Reverse Proxy 부터 알아보도록 합시다. Proxy의 뜻은 대리로서 이 경우 서버와 클라이언트 사이의 대리자 역할을 말합니다. 이후 포스팅에서 다루겠지만 여러 클라이언트에 대한 proxy를 Forward Proxy 라고 하고 여러 서버에 대한 proxy를 Reverse Proxy라고 합니다. 위 그림은 Reverse Proxy에 대한 그림으로서 사용자의 요청을 Reverse Proxy가 받아들이고 이를 서버에서 대리합니다. Reverse Pr..

DevOps/이론 2020. 10. 4. 16:39
[OS] 동기 vs 비동기, 블로킹 vs 논블로킹

이번 포스팅에서는 동기와 비동기, 블로킹과 논블로킹에 대해서 알아보도록 하겠습니다. 네 단어 모두 익숙하지만 명확하게 설명할 수 없고 이해가 부족하다는 생각이 들어서 정리해보았습니다. Synchoronous VS Asynchoronous, Blocking VS Non-blocking 각 개념을 설명하는데 아래의 그림이 가장 일반적입니다. 4가지로 나눠서 하나씩 알아보도록 하겠습니다. Synchoronous-Blocking 가장 일반적인 상황입니다. Application은 Kernel에 System call을 하고 응답이 올 때 까지 기다리게 됩니다. (Synchoronous) 그리고 Kernel은 I/O 작업을 다 한 후에 Application에 응답을 보냅니다. (Blocking) 그렇기 때문에 App..

OS 2020. 9. 22. 17:30
[MySQL] RDS에서 RDS로 데이터 migration

최근에 진행중인 프로젝트에서 테스트 서버와 프로덕트 서버를 분리하고 있습니다. 그 과정에서 테스트 서버의 DB와 프로덕트 서버의 DB도 각각 존재해야했죠. 기존에 사용하던 DB는 AWS RDS MySQL이었고 이를 프로덕트 서버의 DB로 사용하고자 하였습니다. 테스트 서버의 DB는 마찬가지로 AWS RDS MySQL로 새로 만들어서 데이터를 migration하고자 하였습니다. 이 과정들과 그 과정 속에서 발생한 문제점들을 정리해보았습니다. DB Dump 여러 방법이 있겠지만 dump를 하는 방법으로 방향을 잡았습니다. dump란 현재 데이터를 insert query로 바꿔서 저장하는 방법입니다. insert query로 치환되기 때문에 DBMS나 기타 버전 문제애도 크게 영향을 받지 않는다는 장점이 있습..

데이터베이스/MySQL 2020. 9. 22. 15:00
[DB] 데이터베이스 VS 파일처리 시스템

데이터베이스를 알아보기 전에 파일처리 시스템을 비교해보도록 합시다. 데이터베이스가 등장하기 전에는 그 역할을 파일처리 시스템이 담당하였고 그 문제점으로 인해 데이터베이스가 등장하게 되었습니다. 둘의 차이를 알아보며 데이터베이스는 어떤 아이인지 알아가겠습니다. 엄밀하게는 데이터베이스와 파일처리 시스템을 비교하는 것이 아닌 DBMS와 파일처리 시스템을 비교해야 하지만 편의를 위해 다음과 같이 표기하였습니다. DBMS VS 파일처리 시스템 우선 일곱 가지 항목에 대해서 표로 간단하게 살펴봅시다. 파일시스템 데이터베이스 구조 특정한 구조가 존재 X table 형태로 저장 접근 방식 순차적 접근만 가능 비순차적 접근도 가능 중복 O 비교적 덜 발생 불일치 O 비교적 덜 존재 트랜잭션 X 존재 다중 사용자의 접속 ..

데이터베이스/DATABASE 2020. 9. 16. 14:59
[python] GIL, Global interpreter Lock은 무엇일까?

파이썬에서 멀티스레드를 사용하려고 한다면 GIL이란 단어를 마주치게 됩니다. GIL이 무엇인지 파이썬은 왜 GIL을 가지고 있는지 이번 포스팅을 통해 이해해보도록 합시다. Python으로 멀티스레딩 GIL이 무엇인지 설명 하기 전에 python으로 멀티 스레딩과 일반적인 경우의 시간을 비교해보겠습니다. 시간을 측정하기 전, 현재 테스트 중인 환경을 알아봅시다. 프로세서 : 2.3 GHz 듀얼 코어 Intel Core i5 >> sysctl hw.physicalcpu hw.logicalcpu hw.physicalcpu: 2 hw.logicalcpu: 4 MacOS의 하이퍼스레딩이란? 하이퍼 스레딩이란? 랜덤으로 생성한 배열에서 최대값을 찾는 간단한 연산을 두 가지 방법으로 구현해보았습니다. 하나의 스레드가..

프로그래밍 언어/Python 2020. 9. 1. 21:40
하이퍼 스레딩

CPU에는 코어라는 개념이 존재합니다. 코어는 각종 연산을 하는 CPU의 핵심요소를 말하며 다들 싱글코어, 멀티코어 등의 단어는 익숙하실겁니다. 현재 사용중인 MacOS는 코어를 몇 개 사용할까 확인해보기 위해서 이를 확인해보았습니다. >> sysctl hw.physicalcpu hw.logicalcpu hw.physicalcpu: 2 hw.logicalcpu: 4 특이하게도 물리적코어와 논리적코어의 수가 달랐고 이에 대해 알아보다가 하이퍼 스레딩이라는 개념을 접하였습니다. 이번 포스팅에서는 하이퍼 스레딩이 무엇인지 알아보도록 하겠습니다. 하이퍼 스레딩이란? 하이퍼 스레딩이란 인텔이 구현한 동시 멀티스레딩 기술로 영어로 Hyper-Threading, HT라고도 합니다. 물리적 실행 장치 한 개에 가상 실..

카테고리 없음 2020. 9. 1. 19:34