DevOps Engineer

· CS 지식
SQL SQL은 구조화된 쿼리 언어 (Structured Query Language) 이다. 따라서 데이터베이스 자체를 나타내는 것이 아니라, 특정 유형의 데이터베이스와 상호 작용하는 데 사용하는 쿼리 언어. SQL 을 사용하면 관계형 데이터베이스 관리 시스템(RDBMS)에서 데이터를 저장, 수정, 삭제 및 검색할 수 있다. 이러한 관계형 데이터베이스에는 두 가지 특징이 있다. 데이터는 엄격한 데이터 스키마(정해진 규칙)를 따라 데이터베이스 테이블에 저장된다. 데이터는 테이블에 레코드 형식으로 저장되며, 각 테이블에는 명확하게 정의된 구조(테이블에 들어갈 수 있는 데이터와 그렇지 않을 수 있는 데이터를 정의하는 필드의 집합)이 있다. 구조는 필드의 이름과 데이터 유형으로 정의된다. 데이터는 관계를 통해서..
· CS 지식
Middleware Middle과 Software 의 합성어로 미들웨어는 표준화된 인터페이스를 제공하며 복잡한 분산 시스템에서 이기종간에 통신 및 데이터 관리 등 가능하게 통합 관리 해주는 역할이다. 운영체제와 해당 운영체제에서 실행되는 응용 프로그램 사이에 존재하는 소프트웨어 개발자들이 애플리케이션을 보다 효율적으로 구축할 수 있도록 지원 미들웨어는 통신 방식에 따라 분류된다. RPC(Remote Procedure Call : 원격 프로시저 호출) 별도의 원격 제어를 위한 코딩 없이 다른 주소 공간에서 리모트의 함수나 프로시저를 실행할 수 있게 해주는 프로세스 간 통신. 즉, 위치에 상관없이 RPC를 통해 개발자는 원하는 함수를 사용할 수 있다. MOM(Message Oriented Middleware..
· CS 지식
API(Application Programming Interface) API는 응용 프로그램에서 사용할 수 있도록, 운영체제나 프로그래밍 언어가 제공하는 기능을 제어할 수 있게 만든 인터페이스를 뜻한다. 즉, 프로그램과 프로그램을 연결시켜주어 해당 프로그램 끼리 잘 통신할 수 있도록 해주는 매개체 *인터페이스 : 컴퓨터 시스템끼리 정보를 교환하는 공유 경계를 의미한다. 터치 스크린과 같은 일부 컴퓨터 하드웨어 장치들은 인터페이스를 통해 데이터를 송수신 할 수 있으며, 마우스같은 장치들은 오직 시스템에 데이터를 전송만 하는 인터페이스를 제공한다. 쉽게 이야기 하면 API는 규칙들의 집합이고 프로그램의 기능들을 미리 정리해서 클라이언트가 접근할 프로그램을 잘 모르더라도 API를 이용해 손쉽게 통신할 수 있도..
· CS 지식
교차 출처 리소스 공유(Cross-Origin Resource Sharing, CORS)는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행 중인 웹 애플리케이션이 다른 출처의 선택한 자원에 접근할 수 있는 권한을 부여하도록 브라우저에 알려주는 체제입니다. 웹 애플리케이션은 리소스가 자신의 출처(도메인, 프로토콜, 포트)와 다를 때 교차 출처 HTTP 요청을 실행합니다. 쉽게 말해 브라우저에서는 보안적인 이유로 cross-origin HTTP 요청들을 제한한다. 그래서 cross-origin 요청을 하려면 해당 서버의 동의가 필요하다. 만약 서버가 동의한다면 브라우저에서는 요청을 허락하고, 동의하지 않는다면 브라우저에서 거절하게된다. 이러한 허락을 구하고 거절하는 메커니즘을 HTTP-header를 이용해..
· CS 지식
간단하게 정적 분석은 프로그램을 실행하지 않은 상태에서 소스 코드나 컴파일된 코드를 이용해 프로그램을 분석하는 방법이며, 동적 분석은 프로그램을 실제 환경이나 가상 환경에서 실행해 보면서 분석하는 방법이다.정적 분석은 소스 코드의 모든 부분을 확인할 수 있지만, 실행 환경에서의 상태를 정확히 알 수 없기 때문에 실행할 때에만 알 수 있는 데이터가 필요한 경우 정확히 분석할 수 없다.반대로 동적 분석은 실제로 실행해 보면서 분석하기 때문에 실행 환경에서의 상태를 잘 알 수 있지만, 프로그램을 실행할 수 있는 환경을 구축하기 어려울 때가 많고 소스 코드의 모든 부분을 테스트해 보기 힘들다는 문제가 있다.이렇게 각 분석 방식은 장단점이 존재하기 때문에 정적 분석은 주로 개발 단계에서 소스 코드의 구조적인 문제..
CI 란? Continuous Integration 의 약자로 지속적 통합이라는 뜻이다. 단순히 말해 개발자들이 개발한 코드들을 빈번히 Merge 하여 충돌을 없애기 위함이 가장 큰 이유이다. 또한 코드들을 빈번히 Merge하는 과정에서 코드를 Build하고 Test 하여야 하는데, 빈번하게 Build와 Test를 진행해야 하기 때문에 한꺼번에 통합해서 빌드/테스트 하는 것보다 시간이 더 오래 소모되고 귀찮다는 단점이 있었다. 그리하여 코드는 작성하되 테스트와 빌드는 프로그램이 자동으로 해주는 방법으로 시간도 절약하고 귀찮지 않게 하는 방법이 발전 되었다. (Git과 같은 SCM을 이용해 코드를 통합하고 테스트/빌드는 자동화) CI의 장점 코드를 검증하는 데 들이는 시간이 축소된다. 개발에 있어서 편리하..
· CS 지식
레디스를 처음 접했을 때 비관계형, 인메모리 캐시 DB 정도의 키워드로 알고 있었다.정확히 알지는 못해서 알아보도록 한다. 정의Redis는 기본 데이터베이스, 캐시, 메시지 브로커 및 대기열로 가장 일반적으로 사용되는 오픈 소스 인메모리 키-값 데이터 저장소입니다. Redis는 밀리초 미만의 응답 시간을 제공하여 게임, 핀테크, 광고 기술, 소셜 미디어, 의료 및 IoT와 같은 산업에서 빠르고 강력한 실시간 애플리케이션을 가능하게 합니다. 이말인 즉슨, 관계형 DB가 아니며 응답 시간이 빨라 실시간을 요하는 애플리케이션에 용이하다고 보인다. 레디스 에서의 Cache라는 뜻은 왜 나온 것이고 왜 쓰는 걸까?일반 DB에서는 매번 디스크에 정보를 저장하기 때문에 서버가 다운 되어도 정보가 사라지지 않는다. 그..
· CS 지식
어셈블리어란 무엇인가? && 컴파일(compile)의 역사 어셈블리어란 기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어. 컴퓨터 구조에 따라 사용하는 기계어가 달라지며, 따라서 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 초기 컴퓨터가 모두 어셈블리어로 작성 됨에따라 문제가 발생하게 된다. 컴퓨터 구조에 따라 달라지는 어셈블리어에 의해 발생되는 문제인데, 새로운 아키텍쳐가 적용된 CPU가 나올 때마다 매번 같은 프로그램을 새로 나온 CPU에 맞는 어셈블리어로 다시 작성해야 했다. 이와 같은 불편함은 통일된 언어체계의 필요성으로 발전하게 되었고, 이 과정에서 고급 프로그래밍 언어가 나오게 된다. 하지만 이런 고급 프로그래밍 언어를 컴퓨터가 바로 알아들을 수 없었기 때문에 이를 번..
· CS 지식
물리적인 HW 자원을 논리적인 객체로 추상화하는 것을 말한다. 단적인 예로 서버 3대를 가상화하여 1대처럼 보이게 하거나 서버 1대를 여러 개의 장치저럼 사용할 수 있게끔 해주는 기술 가상화는 대상에 따라서 서버 가상화, 데스크톱 가상화, 어플리케이션 가상화로 구분 가능하다. 1. 서버 가상화 서버의 효율성을 올리기 위해서 등장하게 되었고, 가상화 개념의 시초라고 한다. 하이퍼바이저와 가상머신으로 이루어져 있다. 하이퍼바이저 : 하드웨어로부터 제공되는 물리적인 레이어를 추상화하고, 가상머신을 통해 기능들을 사용하도록 해준다. Type-1 : 하이퍼바이저 위에 게스트 OS가 바로 탑재되는 형태 네이티브 또는 베어메탈 하이퍼바이저를 이용하는 가상화 물리적 컴퓨터 하드웨어에 하이퍼바이저를 바로 설치하는 구조 ..
Nowon9159
'분류 전체보기' 카테고리의 글 목록 (20 Page)