형상 관리(Configuration Management)형상 관리는 소프트웨어 구성 관리(Software Configuration Management)라고도 하며, 소프트웨어의 변경 사항을 추적하고 통제하여 체계적으로 관리하는 것을 의미한다. Git을 사용하다 보면 버전 관리라는 용어를 자주 접하게 되는데, 형상 관리와 버전 관리는 같은 의미가 아니다. 형상 관리는 더 포괄적인 개념으로, 그 안에 버전 관리가 포함된다. 더보기여기서 "형상"은 소프트웨어 시스템을 구성하는 모든 구성 요소와 그 상태를 의미한다. 소스 코드, 빌드된 바이너리 파일, 설계 문사, 테스트 케이스와 그 결과, 시스템 설정 및 환경 설정 파일 등이 해당된다. 형상 관리는 이러한 구성 요소들의 버전과 변경 사항을 관리하는 개념이다...
HTTPHTTP는 Hyper Text Transfer Protocol의 약자로, 웹에서 데이터를 주고받기 위해 사용되는 단방향 프로토콜이다. HTTP의 전제는 "클라이언트(웹 브라우저)가 URL 및 부가정보를 통해 사용자가 원하는 페이지를 서버에 요청하고, 서버는 요청에 응답한다." 이다. 여기서 서버에 요청한다는 것이 중요한 포인트다. 클라이언트가 서버에 요청을 해야만 원하는 데이터를 얻을 수 있다는 뜻인데, 사용자는 새로운 데이터를 얻기 위해선 반드시 새로운 URL을 요청해야 한다는 것이다. HTTP의 특징은 다음과 같다.HTTP는 요청(Request) / 응답(Response) 을 기반으로 한다.HTTP는 상태를 유지하지 않는 stateless한 프로토콜인데, 이는 각각의 요청이 독립적이고 서버는..
1. 옵저버 패턴 (Observer Pattern)옵저버(Observer)를 직역하면 관찰자, 감시자를 뜻한다.옵저버 패턴(Observer Pattern)은 옵저버(감시자)가 관찰하는 대상자의 상태 변화(이벤트)가 발생되는 것을 감시하는 패턴이다.옵저버 패턴은 다른 디자인 패턴과 다르게 일대다(1:N) 의존성을 가진다. 옵저버 패턴을 유튜브 채널과 구독에 비유하면 이해하기가 좀 더 쉽다.유튜브 채널을 구독하는 구독자는 자신이 구독한 채널의 새 영상이 업로드되면 알림을 받게 된다. 여기서 유튜브 채널은 관찰 대상자가 되고, 구독자는 옵저버(관찰자)가 된다.유튜브 채널에 새 영상이 업로드되는 이벤트를 감지하고, 미리 정의해 둔 알림을 보내는 동작이 수행된다. 이처럼 옵저버 패턴은 이벤트가 발생될 때마다 미..
들어가기Java로 개발 중인 스터디 프로젝트에서 Kotlin을 적용하기로 했다.항상 Java만 사용했었는데, 새로운 언어를 경험할 수 있게 되어서 굉장히 기대가 된다!Kotlin의 기초 중 하나인 변수와 타입, 그리고 스코프 함수에 대해 알아보자! ✔️ Kotlin 변수변수 선언 기본 형태 키워드(Keyword)코틀린은 변수 선언 시, 해당 변수의 변경 가능 여부를 나타내는 키워드(Keyword)를 필수로 붙여주어야 한다.키워드에는 val과 var이 있다.val (value)변경 불가능한(immutable) 변수로 지정하는 키워드이다.Java의 final 키워드와 동일하다.var (variable)변경 가능한(mutable) 변수로 지정하는 키워드이다.Java의 일반적인 변수와 동일하다. 변수 타..
들어가기현재 참여하고 있는 스터디 프로젝트에 가장 적합한 배포 방법을 적용하기 위해서 무중단 배포 전략에 대해 공부를 했다.먼저 배포 방법에 대해 알아보고, 무중단 배포의 3가지 전략에 대해 살펴보자! ✔️ 중단 배포와 무중단 배포배포 방법에는 중단 배포와 무중단 배포가 있다. 중단 배포란?서버 한대로 서비스를 운영한다고 예를 들어보자.현재서버에는 V1 버전의 서비스가 실행되고 있다. V1 버전에 기능을 추가하고 싶어서 V2 버전의 서비스를 개발했다.이제 모든 사용자가 V2 버전의 서비스를 사용할 수 있도록 배포를 해야 한다. 새로운 버전의 배포 과정은 다음과 같다.1. 개발된 V2 버전 빌드를 서버에 다운로드한다.2. V2 버전을 실행하기 위해 V1 버전의 프로세스를 종료한다. (V1과 V..
들어가기현재 참여하고 있는 스터디에서 도메인을 구입하고 DNS 설정을 하는 업무를 담당하게 되었다.우리 스터디는 하나의 도메인을 구입해서 프론트용, 백엔드용과 같이 서브 도메인으로 나누어 사용할 것이다.본 포스팅에서는 서브 도메인을 생성할 때 필요한 DNS 레코드 개념을 정리해보려고 한다.도메인을 구입하고 AWS에 적용하는 과정은 다음 포스팅에서 작성할 예정이다. ✔️ DNS 레코드(Record)란?DNS 레코드(Domain Name System Record)는 DNS 서버에 요청된 패킷을 어떻게 처리할지에 대한 정보이다. 사용자가 브라우저 주소창에 도메인 네임을 입력했을 때, DNS 서버는 해당 도메인 네임에 대한 DNS 레코드를 찾아서 최종적으로 어떤 IP주소로 사용자를 연결시켜줘야 하는..
✏️ 배열(Array)이란?배열(Array)- 동일한 타입의 데이터를 연속적으로 나열하고, 데이터의 순서에 따른 인덱스를 통해 데이터를 제어하는 자료구조요소(Element) : 배열을 구성하는 각각의 값인덱스(Index) : 배열에서 위치를 가리키는 번호 배열의 특징배열은 순서가 존재하며, 인덱스를 통해 데이터에 접근할 수 있다.동일한 자료형의 데이터가 저장된다.배열을 처음 선언할 때 지정한 크기를 변경할 수 없다. ✏️ 배열(Array)의 구조 배열의 장점인덱스를 통해 데이터에 무작위 접근이 가능해서 검색 성능이 좋다. (순차적으로 접근할 필요 X)연속된 메모리 공간에 데이터가 존재하기 때문에 관리하기 쉽다. 배열의 단점데이터 삽입과 삭제가 비효율적이다.데이터를 삽입하거나 삭제할 경우,..
자료구조(Data Structure)란?자료구조(Data Structure)는 대량의 데이터를 효율적으로 관리하고 사용할 수 있도록 데이터 특성에 따라 구분된 데이터 구조이다.자료구조는 특정 상황에 맞게 메모리를 효율적으로 사용하면서 데이터를 빠르고 안정적으로 처리하도록 만들어져 있다. 그렇기 때문에 상황별로 빠르고 안정적이거나, 느리고 불안정적일 수 있다. 우리는 다양한 자료구조를 알고 상황에 맞는 자료구조를 선택할 수 있어야 한다. 자료구조는 크게 선형(Linear) 구조와 비선형(NonLinear) 구조로 나뉜다. 선형(Linear) 구조선형 구조는 자료를 구성하는 데이터들을 순차적으로 나열한 구조로, 자료들 간의 앞/뒤 관계가 1:1 관계이다.선형구조에는 배열, 연결리스트, 스택, 큐, 덱이 ..