본문 바로가기

정보

(31)
Docker (2) - Hypervisor와 Docker의 가상화 방식 앞서 말한 도커를 사용하는 이유 중 다중 컨테이너에 대한 내용이 있다.각각의 container가 실행하는 image에는 OS도 들어있다고 설명했다.그렇다면 Docker는 OS를 여러 개 실행하는 것인가? 이는 VM과는 뭐가 다른 것인가? 1. Linux 기반의 Docker도커는 LXC, 즉 Linux Container를 기반으로 만들어진 플랫폼이기에 이것의 명령어 또한 linux 기반이다.앞서서 Container라는 것은 cut-down OS를 내장하는 환경을 구축한다고 했지만,window 환경에서 Docker를 실행하려면 WSL2(Windows Subsystem for Linux)를 설치해야 한다.왜냐하면 window에서는 linux 기반의 container를 native로 실행할 수 없기 때문이다.l..
Docker (1) - Docker? 어떤 프로그램을 개발하고, 이를 테스트하거나 배포하고 실행할 때 실행 환경을 확인해야 하는 작업이 필요하다.가령 게임만 하더라도 OS와 스펙을 확인한다.개발에서도 일례로 package.json이나 package-lock.json을 통해 의존성을 확인하고 node 버전을 확인한다. 만약 소프트웨어를 개발하고, 이와 같은 일련의 환경 설정(런타임, OS 설정까지) 한 번에 제공한다고 가정해보면?환경 설정 자체는 하지 않아도 되겠지만 실질적으로는 매우 힘들다.일단 OS만 하더라도 설치에 수십 GB가 들어갈 것이다. 그러나 이를 비슷하게 처리해주는 것이 바로 Docker라는 컨테이너 기반 소프트웨어이다.Docker를 자세히 알아보자. 1. Docker란?Docker is an open platform for d..
클라우드 컴퓨팅, AWS Cloud 서비스 On-Premise vs On-Demand vs ServerlessOn-Premise : 물리 서버, 흔히 생각하는 서버를 기업 내부에 구축한 것이다.기업의 특성에 맞게 인프라를 구축할 수 있다 : 완벽한 기술 스택의 제어가 가능물리적으로 가까운 인프라가 구축되어 있기에 잘 관리 된다면 대기시간이 낮다.보안성이 좋다 : 내부 네트워크를 이용하기 때문에 회사의 기밀, 연구결과 등의 유출을 방지 가능처음 설치 및 이후 유지, 관리에 비용이 많이 든다. 서비스 종료시에도 처리가 힘들다.확장이 유연하지 못하다 :  비용이 들고, 원하는 것 이상으로 확장하게 되어야 할 경우가 존재On-Demand : 가상 서버, AWS, Azure와 같은 초대형 기업의 물리 서버에 사설 가상 망을 구축한 것사용한 만큼만 비용을 ..
Java에서의 다형성을 사용한 구현 OOP, 객체 지향 프로그래밍에서 다형성이란하나의 클래스, 혹은 인터페이스의 타입을 구현하는 구현체의 방식을 다양하게 가질 수 있다는 성질이다.이는 개념으로서도 중요하지만, 실제 예시를 살펴보는게 더 좋을 것 같다. public class Product { protected int price; public Product(int price) { this.price = price; } public void print() { System.out.println( String.format("가격은 %s 입니다.", this.price) ); }}---------------------------public class Tax ..
npx 명령 시 의존성 트리가 변하는 이유 npm을 사용하는 도중 npx라는 흥미로운 명령이 있어서 한번 살펴봤다. npm(node package manager)node.js 를 통한 프로젝트를 진행할 때 모든 패키지를 관리하기 위해 사용한다.npm 에서 특정 라이브러리, 모듈을 사용하고 싶다면 이를 설치 후 실행하는 방식으로 진행이 된다. 하지만 계속해서 쓰는 것이 아니라 실험적으로 써보거나이후에 사용하지 않거나 하는 패키지가 존재할 수도 있다.그리고 이를 반복적으로 하려면 package.json과 package-lock.json이 수많은 패키지로 인해 비대해지고 프로젝트의 사이즈도 커질 것이다.따라서 한 번만 쓰고 말 패키지에 대해서해당하는 패키지를 설치하지 않고 실행만 하는 명령. 이것이 npx이다. npx(node package execu..
JavaScript 엔진 동작 원리와 Hoisting JavaScript는 함수형 프로그래밍을 베이스로 한 언어이다. 따라서 .js파일을 실행한다는 것은 해당하는 함수와 파라미터,다시 말해 변수(JS에서는 함수 또한 변수)에 대한 메모리를 할당하고,이 함수들을 실행한다는 것을 말한다. 이 일련의 과정들이 어떻게 진행되는지 간단하게 정리하면 다음과 같다. 1. Execution Context (E.C) 생성엔진이 코드를 실행할 때, 제일 먼저 생성하는 것글로벌 코드에서 생성되거나 함수 호출 시 마다 별도로 생성 됨.Call Stack으로 관리된다. 함수가 호출될 때 마다 새로운 E.C가 글로벌 context위에 쌓이는 형식크게 3가지의 종류가 있다.Global Context : 프로그램이 실행되면 가장 먼저 실행. 모든 전역 변수, 함수 관리JS에서 사용되는..
Git의 기본, 버전 관리 및 협업 관리 Git의 기본✅ Git 은 스냅샷 기반의 버전 관리 시스템이다.쉽게 말해, 전체 파일 시스템을 기준으로 비교해 변경된 파일 시스템에 대한 변경 사항들을 저장한다.변경 사항이 없는 파일은 기존의 파일을 재사용한다. ✅ 현재 커밋(파일 상태)에서 git이 추적 관리하고 있는 파일을 변경하면,이 변경 사항들을 인식하고 있다가 git add 와 같은 명령어를 통해 변경 사항을 commit하기 위해서 추가 한다.여기서 달라지는 변경사항들을 저장하고, 주석을 다는 것이 commit이고이를 통해서 프로젝트의 전반적인 파일 관리를 진행한다.이것이 git의 주요 역할 중 하나이다.  Git을 통한 협업에서 발생하는 Conflict➡️ 여기서 A라는 원격 main branch에 대해 1이라는 사람이 feature1 bra..
CSRF, 이를 막기 위한 CORS CSRF는 Cross Site Request Forgery, CORS는 Cross Origin Resource Sharing의 약자. 일단 Site와 Origin의 차이를 살펴보자.Origin : Scheme :// Host Name(Domain Name) : Portex) https://namucy.tistory.com:8080https 가 scheme ; 프로토콜을 의미namucy.tistory.com 가 Host Name;namucy가 subdomain, tistory가 second level domain, com이 top level domainPort는 서버가 요청을 받는 포트를 말한다. 일반적으로 생략되어있으면 default 포트로 향함.Site : Domain Name 중 Second leve..