리스트 : 콘텐츠가 있으면 최근 10건을 불러옵니다.
-
Kubernetes scale-out 중 pod port에 대한 고민Kubernetes 2023.03.29 16:28
개요 이번 프로젝트에서 서버를 kubernetes 환경에 배포하여 구축하고 있었다. 부하가 많을 것을 예상하고 scale-out을 고려하고 있었는데 spring boot의 jar 파일로 배포되는 서버는 포트가 기본적으로 8080이고 포트 번호 8080으로 서버가 scale-out되면 포트가 중복되는 것이 아닌지 고민하게 되었다. 다른 사람들과 고민했을 때는 포트가 중복될 수 있기 때문에 랜덤 포트가 지정되도록 설정을 해야된다고 하기도 했다. 하지만 kubernetes 환경에서는 그럴 필요가 없었다. Kubernetes 네트워크 service pod는 kubernetes에 올라갈 때 IP가 랜덤하게 지정되고 리스타트 때마다 또 변하기 때문에 엔드포인트를 고정하기 어렵다. 게다가 여러 pod가 같은 애플리케..
-
[web] 그놈의 CORS와 SOP 란Web 2022.12.17 02:23
개요 최근 여러 프로젝트를 진행하다 CORS 오류를 자주 마주치게 되었다. 사실 CORS가 문제가 아니라 SOP이 문제라는 것도 레퍼런스들을 찾아보다 알게 되었다. CORS는 Cross Origin Resource Sharing의 약자이다. Cross Origin 간의 Resource를 공유할 수 있도록 한다는 것인데 Cross Origin은 뭘까? Cross Origin? 여기서 origin은 출처 즉, URL에서 protocol, hostname, port를 말한다. 그럼 Cross Origin은 protocol, hostname, port가 서로 다른 origin을 말한다. 근데 서로 다른 origin끼리 resource를 공유하는 것이 뭐 어쨋다는 말이지?? 사실 문제는 SOP 때문이다. SOP ..
-
WSL 외부 접속 설정하기 - ssh, 포트포워딩wsl 2022.07.29 23:37
노션에 정리하고 옮겼더니 보기가 안좋다... 노션으로 보면 더 깔끔할지도... https://pickle-link-80b.notion.site/wsl-0c5fcaaa8917403f83e7fd8b8a826db8 wsl 외부 접속 설정하기 개요 pickle-link-80b.notion.site 개요 본인은 windows wsl환경에서 개발하고 있다. 개발을 하다보면 wsl에 ssh로 접속하거나 디바이스를 서버로써 활용하고 싶을 때가 있다. 그러나 공유기 환경에서 사용하다보니 디바이스의 사설 ip가 부팅할 때마다 변경되었고, wsl 또한 디바이스의 사설 ip와는 별개로, 가상 ip가 주어지는데 이 또한 부팅할 때마다 변경되었다. wsl에 접근하기 위해서는 외부에 알려진 나의 공인 ip의 특정 포트를 현재 쓰고..
-
DB - 트랜잭션 관리Database 2022.04.23 19:09
데이터베이스는 보통 비휘발성 저장 장치인 디스크에 데이터를 저장하며,전체 데이터베이스의 일부분을 메인 메모리에 유지한다. DBMS는 데이터를 고정 길이의 페이지(page)로 저장하며, 디스크에서 읽거나 쓸 때에 페이지 단위로 입출력이 이루어진다. 메인 메모리에 유지하는 페이지들을 관리하는 모듈을 보통 페이지 버퍼(page buffer) 관리자 또는 버퍼 관리자라고 부르는데, DBMS의 많은 주요 모듈 중에서 매우 중요한 모듈 중의 하나이다. DBMS는 각 제품마다 구조가 다르기는 하지만, 위 그림과 같이 크게 질의 처리기(Query Processor)와 저장 시스템(Storage System)으로 나눠볼 수 있다. MySQL의 경우에는 InnoDB, MyISAM 등과 같이 여러 하부 저장 시스템을 선택할..
-
DB - 동시성 제어와 lockDatabase 2022.04.17 01:43
Transaction?? transaction(트랜잭션)이란 Database Managemet System에서 데이터를 다루는 논리적인 작업의 단위를 나타낸다. 데이터베이스에 삽입, 수정 등의 작업을 할 때, 여러 개의 작업들을 하나의 transaction으로 묶는다. 예를 들어, A 계좌에서 B 계좌로 돈을 전송한다고 할 때, A 계좌에서 돈을 빼는 작업과 B 계좌에 돈을 넣는 작업이 이루어지게 된다. 이 두 가지의 작업(2개의 SQL 문)을 개별적으로 수행하는 것이 아니라 하나의 트랜잭션으로 묶는다. 그리고 묶인 트랜잭션안에 작업들 중 몇 개만 실행되는 상황은 발생하지 않기 때문에 All or nothing이라 하고 트랜잭션의 성질중 Atomicity를 나타낸다. 동시성 제어(concurrency c..
-
OS - File System(파일시스템)운영체제 2022.03.27 00:20
File System??? 운영체제와 모든 데이터, 프로그램의 저장과 접근을 위한 기법을 제공한다. 사용자의 응용프로그램을 실행하면서 생기는 정보를 파일이라는 단위로 저장하고 관리하는 운영체제의 서브 시스템이다. 파일은 일반적으로 레코드(record) 혹은 블록(block)단위로 비휘발성 보조기억장치에 저장된다. 시스템 내의 모든 파일에 관한 정보를 제공하는 계층적 디렉터리 구조이며, 파일과 파일의 메타데이터, 디렉토리 정보 등을 관리한다. 파일 시스템의 목적 하드디스크와 메인 메모리 속도 차를 줄일 수 있다. 파일 관리 하드디스크 용량을 효율적으로 이용할 수 있다. 메타데이터 : 파일을 관리하기 위해 필요한 정보들을 말한다. 단, 파일 속 내용을 말하는 것은 아니다. 파일 이름, 유형, 저장된 위치, ..
-
OS - Context Switching 이론 공부운영체제 2022.03.17 16:37
Context Switching이란? CPU는 한번에 하나의 프로세스만 처리할 수 있다. CPU 자원을 공유해서 여러 프로세스가 쓰기 위해서는 context swtiching 과정이 필요하다. 여러 프로세스를 처리해야 하는 상황에서 현재 진행중인 Task(프로세스, 스레드)의 상태를 PCB(Process Control Block)에 저장하고 다음에 진행할 Task의 상태값을 읽어 적용하는 과정을 context switching이라고 한다. 다른 프로세스에게 CPU 자원을 할당해 작업을 수행하는 과정을 말한다. PCB(Process Control Block)란? 프로세스 제어 블록이란 특정한 프로세스에 대해 관리할 필요가 있는 정보를 포함하고 있는 운영체제 커널의 자료구조이다. kernal space에 유..
-
WSL home directory 변경wsl 2022.02.11 18:00
/mnt/하위 디렉토리들은 wsl를 사용할때 통신하는데에 오래 걸려 반응이 느리다는 것이다. 따라서 npm 반응속도를 높이기 위해 /mnt/c/....에 있던 홈 디렉토리를 변경하기로 했다. 하지만 그 과정이 순탄하지 않았다. npm 느림 포스트에서 언급했지만 좀 더 자세히 기록해볼까 한다. WSL 홈 디렉토리 변경 usermod 사용 구글링하여 홈 디렉토리를 변경하는 방법을 찾아보았다. 보아하니 user마다 홈 디렉토리가 다르고 그것을 바꿔주는 과정이었다. $ usermod -d /newhome/username username 이 명령어를 사용하면 username이라는 사용자의 홈 디렉토리를 /newhome/username로 바꾸는 것이다. 하지만 역시 한번에 먹히면 재미가 없나보다. usermod: ..
-
[npm] wsl2에서 npm 명령어의 반응이 느림 - 해결!node.js 2022.02.10 21:54
npm 명령어 반응이 느리다. 혼자 node.js 공부를 하면서 npm을 사용할 일이 생기기 마련이었다. $ npm init npm init을 했는데 명령 수행까지 한 3~4초나 소요되는 것이다. -verbose 옵션을 주고 처리시간을 봤는데 처리하는데 실질적인 시간을 얼마 안걸리고, 명령어가 처음 실행되는 시간이 무척 오래걸렸다. 참을 수 없어서 이유를 찾아보다가 뜻밖에 장소에서 이유를 찾을 수 있었다. https://docs.microsoft.com/ko-kr/windows/dev-environment/javascript/react-on-wsl Linux용 Windows 하위 시스템에 React 설치 WSL(Linux용 Windows 하위 시스템)에 React를 설치하고 React 구성 요소와 cre..
-
[Node.js] http 서버 생성 - http.createServer() 함수node.js 2022.02.05 23:19
node.js에서 http 서버 만들기 http.createServer() 함수로 request를 받고 response할 수 있는 서버(http.server) 객체를 만든다. http.createServer의 인자로 있는 callback 함수는 request, response를 인자로 하고 있으며 각각 요청과 응답에 관한 정보를 가지고 있다. 전체 코드 const http = require("http"); let app = http.createServer(function (request, response) { //응답 url const _url = request.url; //URL 객체 생성 - url의 정보를 object 형식으로 보여준다. const test_url = new URL(_url, "ht..