교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다. 쉽게 말해 브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한한다. 그래서 cross-origin 요청을 하려면 해당 서버의 동의가 필요하다. 만약 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의하지 않는다면 브라우저에서 거절하게된다. 이러한 허락을 구하고 거절하는 메커니즘을 HTTP-header를 이용해..
전체 글
간단하게 정적 분석은 프로그램을 실행하지 않은 상태에서 소스 코드나 컴파일된 코드를 이용해 프로그램을 분석하는 방법이며, 동적 분석은 프로그램을 실제 환경이나 가상 환경에서 실행해 보면서 분석하는 방법이다.정적 분석은 소스 코드의 모든 부분을 확인할 수 있지만, 실행 환경에서의 상태를 정확히 알 수 없기 때문에 실행할 때에만 알 수 있는 데이터가 필요한 경우 정확히 분석할 수 없다.반대로 동적 분석은 실제로 실행해 보면서 분석하기 때문에 실행 환경에서의 상태를 잘 알 수 있지만, 프로그램을 실행할 수 있는 환경을 구축하기 어려울 때가 많고 소스 코드의 모든 부분을 테스트해 보기 힘들다는 문제가 있다.이렇게 각 분석 방식은 장단점이 존재하기 때문에 정적 분석은 주로 개발 단계에서 소스 코드의 구조적인 문제..
CI 란? Continuous Integration 의 약자로 지속적 통합이라는 뜻이다. 단순히 말해 개발자들이 개발한 코드들을 빈번히 Merge 하여 충돌을 없애기 위함이 가장 큰 이유이다. 또한 코드들을 빈번히 Merge하는 과정에서 코드를 Build하고 Test 하여야 하는데, 빈번하게 Build와 Test를 진행해야 하기 때문에 한꺼번에 통합해서 빌드/테스트 하는 것보다 시간이 더 오래 소모되고 귀찮다는 단점이 있었다. 그리하여 코드는 작성하되 테스트와 빌드는 프로그램이 자동으로 해주는 방법으로 시간도 절약하고 귀찮지 않게 하는 방법이 발전 되었다. (Git과 같은 SCM을 이용해 코드를 통합하고 테스트/빌드는 자동화) CI의 장점 코드를 검증하는 데 들이는 시간이 축소된다. 개발에 있어서 편리하..
레디스를 처음 접했을 때 비관계형, 인메모리 캐시 DB 정도의 키워드로 알고 있었다.정확히 알지는 못해서 알아보도록 한다. 정의Redis는 기본 데이터베이스, 캐시, 메시지 브로커 및 대기열로 가장 일반적으로 사용되는 오픈 소스 인메모리 키-값 데이터 저장소입니다. Redis는 밀리초 미만의 응답 시간을 제공하여 게임, 핀테크, 광고 기술, 소셜 미디어, 의료 및 IoT와 같은 산업에서 빠르고 강력한 실시간 애플리케이션을 가능하게 합니다. 이말인 즉슨, 관계형 DB가 아니며 응답 시간이 빨라 실시간을 요하는 애플리케이션에 용이하다고 보인다. 레디스 에서의 Cache라는 뜻은 왜 나온 것이고 왜 쓰는 걸까?일반 DB에서는 매번 디스크에 정보를 저장하기 때문에 서버가 다운 되어도 정보가 사라지지 않는다. 그..
어셈블리어란 무엇인가? && 컴파일(compile)의 역사 어셈블리어란 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어. 컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 초기 컴퓨터가 모두 어셈블리어로 작성 됨에따라 문제가 발생하게 된다. 컴퓨터 구조에 따라 달라지는 어셈블리어에 의해 발생되는 문제인데, 새로운 아키텍쳐가 적용된 CPU가 나올 때마다 매번 같은 프로그램을 새로 나온 CPU에 맞는 어셈블리어로 다시 작성해야 했다. 이와 같은 불편함은 통일된 언어체계의 필요성으로 발전하게 되었고, 이 과정에서 고급 프로그래밍 언어가 나오게 된다. 하지만 이런 고급 프로그래밍 언어를 컴퓨터가 바로 알아들을 수 없었기 때문에 이를 번..
물리적인 HW 자원을 논리적인 객체로 추상화하는 것을 말한다. 단적인 예로 서버 3대를 가상화하여 1대처럼 보이게 하거나 서버 1대를 여러 개의 장치저럼 사용할 수 있게끔 해주는 기술 가상화는 대상에 따라서 서버 가상화, 데스크톱 가상화, 어플리케이션 가상화로 구분 가능하다. 1. 서버 가상화 서버의 효율성을 올리기 위해서 등장하게 되었고, 가상화 개념의 시초라고 한다. 하이퍼바이저와 가상머신으로 이루어져 있다. 하이퍼바이저 : 하드웨어로부터 제공되는 물리적인 레이어를 추상화하고, 가상머신을 통해 기능들을 사용하도록 해준다. Type-1 : 하이퍼바이저 위에 게스트 OS가 바로 탑재되는 형태 네이티브 또는 베어메탈 하이퍼바이저를 이용하는 가상화 물리적 컴퓨터 하드웨어에 하이퍼바이저를 바로 설치하는 구조 ..
도커에 대한 정의 소프트웨어를 컨테이너라는 표준화된 유닛으로 패키징한 것 컨테이너 안에는 라이브러리, 시스템 도구, 코드, 런타임 등 소프트웨어를 실행하는 데 필요한 모든 것이 포함되어 있다. 간단히 말해 컨테이너 기반의 오픈소스 가상화 플랫폼이며, 애플리케이션을 환경에 구애받지 않고 실행하는 기술이라고 생각하면 된다. 도커를 쓰는 이유? 독립적 환경 제공 가상 컴퓨팅 즉 VM 같은 경우에는 한 물리적 컴퓨터 안에 각각 OS를 가동하는 가상 컴퓨터들이 물리적 자원을 분할해서 사용한다. 도커는 OS 단 까지 내려가는 게 아니라 컨테이너라는 환경으로 독립적인 공간을 사용해 실행 환경만 독립적으로 돌리게 되어 다른 업무 및 서비스 환경에 방해가 되지 않는다. 그래서 오버헤드가 적고 성능 손실이 적다. 반면, ..
소프트웨어 엔지니어는 프로그래밍 언어보다 숙련도를 선호한다고 인식합니다. 예를 들어 프런트 엔드 엔지니어, 백엔드 엔지니어, 전체 스택 엔지니어(양쪽 끝에서 작업할 수 있음)와 같은 작업 영역에 따라 위치가 정의될 수 있습니다. DevOps는 위의 프로그래머의 위치와 완전히 다른 유형의 역할입니다. 짧고 명확한보기로 - DevOps=개발+운영 DevOps 엔지니어는 현재 구인 시장에서 영향력있는 위치에 있으며, 매우 인기있는 경력이되고 있습니다. DevOps 엔지니어는 IT의 모든 섹터에서 작업할 수 있는 여러 옵션을 제공합니다. DevOps 엔지니어가 되는 방법을 배우기 위해 여기에 있다면 끝까지 블로그를 스캔하는 것을 잊지 마십시오. ➤ DevOps 엔지니어는 실제로 무엇을 합니까? ➤ DevOp..
이 게시글은 원 출처가 있는 게시글이며 저는 해당 글에 대한 권리가 없음을 밝힙니다. [출처] https://mr-y.tistory.com/7 이 게시글은 원문을 번역한 글입니다. 문제가 있을 경우 삭제하겠습니다. 현재 IT 시장에서 DevOps 영역은 급여/경력 면에서 IT인의 최고 선택지 중 하나다. 자주 접하는 질문은 "DevOps 엔지니어는 어떻게 되는가?"이다. 이 블로그에서는 여러 조직에서 DevOps를 연습한 나의 경험을 바탕으로 이 질문에 답하고자 한다. 나를 포함한 많은 사람들이 "DevOps 엔지니어"나 "DevOps 팀" 같은 것은 존재하지 않는다고 주장하지만, 업계인들은 "DevOps 엔지니어"라는 용어에 익숙해졌다. DevOps 철학만 이해한다면 직함명은 별로 의미가 없다. 하지만..