전체 글 126

AWS 프리티어 EC2에 OpenVPN 서버 구축하기

옛날부터 쓰던 VPN 클라이언트가 어느샌가 유료화되어 못쓰게 되었다. 속도가 너무 느리기도 했고 이 참에 내가 직접 구축하는게 낫겠다 싶어 EC2에 OpenVPN 서버를 만들게 되었다. 다음과 같은 순서로 진행하였다. 0. EC2 설정 1. EasyRSA로 인증서 및 키 발급 2. 클라이언트 인증서 발급 3. OpenVPN 서버 설정 4. OpenVPN 서버 시작 5. 클라이언트 설정 0. EC2 설정 0-1. EC2 인스턴스 생성 프리티어 EC2를 하나 생성해준다. Ubuntu를 사용해서 EC2를 구성할 계획이다. VPN 서버의 위치는 EC2의 리전에 따라 결정되기 때문에, 원하는 리전에 생성하면 된다. 필자는 버지니아 북부로 선택하였다. 우측 상단의 주황색 인스턴스 시작 버튼을 클릭하여 인스턴스를 설..

Today I Learned/AWS 2023.08.09

Hadoop YARN

Hadoop v1 아키텍쳐 Hadoop v1과 v2의 가장 큰 차이점은 YARN의 존재이다. Hadoop v1의 아키텍쳐에는 YARN(Yet Another Resource Negotiator)이란 자원관리매니져가 없다. MapReduce 작업을 실행하기 위해 작업과 자원을 할당받기 위해 Master node의 역할을 하는 Job Tracker, Worker node의 역할을 하는 Task Tracker가 사용되었다. 사용자는 Map Task과 Reduce Task로 이루어진 작업을 client에 제출한다. client는 작업을 attempt의 단위로 분할하여 Job Tracker에 보낸다. Job Tracker는 자원과 작업 단위를 각 worker node의 Task Tracker에 분배하여 작업을 실행..

ORM

RDB **Relational model(관계형 모델)**이란, 데이터를 여러개의 속성과 값을 통해 나타내는 모델이다. 데이터의 각 속성을 이루는 이루는 값은 데이터 자체의 고유성을 표현하기도 하며, 외무 모델과의 관계를 나타내는 등 특정 규칙을 통해 속성을 이룰 수 있다. 일반적으로 Relational model은 RDB(Relational Database; 관계형 데이터베이스)에 Table의 형태로 저장된다. Table은 각 데이터를 나타내는 Row와 데이터의 속성을 나타내는 Column으로 구성되며, Primary key(고유 키)가 각 Row에 대한 식별자의 역할을 하며 데이터를 식별한다. OOP 개발 방법론 구조적 방법론 정형화된 분석 절차에 따라 사용자 요구사항을 파악하여 문서화하는 처리중심의..

프로세스 동기화

Data Consistency, Race Condition, Critical Section 동시에 다수의 프로세스가 하나의 자원으로 접근할 때, 공유자원에 대한 무절제한 접근은 개별 프로세스의 단위에서 공유자원에 대한 신뢰성을 해한다. 공유하는 **자원의 일관성(Data consistency)**을 유지하기 위해선 각 프로세스가 순서를 가져야 한다. 프로세스 동기화는 이러한 자원의 일관성을 지키기 위해 다수의 프로세스를 관리하는 메커니즘이다. 동기화 되지 않은 다수의 프로세스가 동시에 자원에 접근하여 자원의 일관성을 깨트릴 수 있는 상황을 **경쟁 상태(Race condition)**라 부른다. 이러한 상태에 접근하는것을 방지하기 위해 코드 상에서의 공유자원 접근을 관리하는데, 공유 자원에 접근하는 코드..

DNS

DNS(Domain Name System; 도메인 이름 시스템) Domain(영역, 범위) + Name(이름) + System(체계) ⇒ 특정 기준으로 분리한 네트워크의 영역에 따라 붙인 이름을 관리하는 체계 DNS의 시작 ARPANET시절, 스탠포드 연구소는 복잡한 네트워크 위에서 서로의 기기로 정보를 정확히 송수신 하기 위해 IP주소를 사용하였다. IP 주소를 사용하여 다른 기기에 접근하기 위해선, 숫자로 이루어진 상대 기기의 IP주소를 알아야 한다. 네트워크 상에 존재하는 컴퓨터가 점점 많아지자, 이를 쉽게 기억하기 위해 전화번호부처럼 숫자로 이루어진 IP주소와 평문으로 이루어진 호스트 이름을 맵핑하는 hosts.txt라는 파일을 관리하였다. UNIX에서는 이를 /etc/hosts 파일로 확인할 수..

애플리케이션 테스트의 의의

책임의 분리 객체 지향 설계의 5가지 원칙에 해당하는 SRP(Single Responsibility Principle; 단일 책임 원칙)에 따라, 각각의 메소드와 모듈들은 한가지 기능만을 가지고 있다. 이에 따라 구현한 메소드와 모듈을 테스트 하기 위해 각각 대응하는 테스트 코드를 작성해야 한다. 이를 단위 테스팅이라 부른다. 단위 테스팅을 작성함으로써 각 메소드는 하나의 기능을 가질 수 있게 되고, 책임을 분리시킬 수 있다. 용이한 유지 보수 우리에겐 본코드 상에서의 디버깅이라는 더욱 직관적인 해결책이 있다. 하지만 애플리케이션의 요구사항이 바뀌어 기능을 부분적으로 수정해야 될 상황이라면, 긴밀하게 관계를 지어 작동하는 모듈들 사이에서 트래킹을 통해 디버깅 하기에는 무리가 있을것이다. 애플리케이션 아키..

직관과 논리

고등동물인 인간은 논리적으로 매우 복잡한 상황에서도 직관적으로 행동할 수 있다. 이는 매우 빠르고 비교적 정확한 소통을 도출함으로써 인간의 가장 큰 무기가 되었다. 이 작용 얼마나 강력한지, 의식적으로 집중하여 정확한 논리 구조를 간파하려면 많은 시간과 에너지가 든다. 하지만 로우-레벨 논리들로 구성된 프로그래밍에서는 이러한 직관들이 방해될 때가 있다. 간단한 문제를 풀어보자. 카드 문제 사실: 모든 카드의 한쪽에는 알파벳, 다른 쪽에는 숫자가 적혀있다. 주장: 만약 카드의 한 쪽이 D이면, 다른 한 쪽은 3이다. 여기서, 주장이 사실인지 확인하기 위해 아래 카드 중 반드시 뒤집어 보아야 하는 카드는 몇개이고, 어느것인가? 매우 간단해 보이는 문제지만, 많은 사람들이 이 문제를 틀린다고 한다. 정답은 D..

SSAFY 8기 지원 후기

매번 독학만 하다 보니 협업 프로젝트를 진행하고 싶었다. 마침 자주 보는 유튜브에서 특정 부트캠프에 의한 취업 허들이 존재한다길래 취업시장에서 유리하게 작용될 수 있는 부트캠프를 찾아보았다. https://www.youtube.com/watch?v=qdX47ySzzb0&t=910s&ab_channel=%EA%B0%9C%EB%B0%9C%EB%B0%94%EB%8B%A5 이리저리 많은 캠프가 존재하는데, 대부분 캠프 소개에서 강사진에 관한 언급조차 하지 않았고 자기주도적 역량을 너무나 강조하고 있었다. 또한 정부 지원으로 학생들은 무상으로 캠프를 다닐 수 있지만, 말도 안되는 가격을 제시하는 캠프들이 많았다. 취업률을 통해 정부 지원을 받는 캠프들이다 보니, 그렇고 그런 기업들에 개발자로 취직하는것이 많은 캠..

개발/구직활동 2022.06.29

cron

서버에 부하 또는 에러 발생 시 서버가 종료될 수 있다. 이 때 nohup 명령어를 통해 서버가 종료 되었다는 로그를 남길 수 있다. 하지만 이를 통해 중지된 서버를 재시작할 순 없다. cron은 UNIX 계열의 잡 스케줄러로, 주기적으로 특정 명령어를 실행해준다. 이를 통해 서버를 자동으로 재시작할 수 있다. crontab 명령어를 통해 cron job을 갱신할 수 있다. > crontab -e #Edit this file to introduce tasks to be run by cron # ... * * * * * ls -al 1>>cron.log 이는 주기적으로 ls 명령어를 실행하여 결과를 cron.log 파일에 덧붙이는 스크립트이다. 여기서 첫 줄의 5개의 아스트리크는 시간을 나타내며, 각 위치..

카테고리 없음 2022.06.28

Linux 파일 권한

ls -l 명령어를 실행해보면 맨 우측에 이상한 문자열을 볼 수 있다. -rw-rw-r-- 1 ubuntu ubuntu 113 Apr 23 07:36 Application.java -rw-r--r-- 1 root root 7 Apr 23 07:47 a.txt ... 첫번째 문자는 해당 객체의 종류를 의미한다. “-” 파일, “d” 폴더 나머지 9개의 문자는 각 세부분으로 나뉘어진다. “rw-”+”r—”+”r—” (소유자의 권한+그룹의 권한+공동(anyone)의 권한) 맨 앞의 문자를 제하면 나머지 9개의 문자는 3개의 문자로 나뉘어진 권한 표기용 3개의 섹터이다. 각 섹터는 r, w, x의 권한을 표기하며 이는 각 read, write, execute를 의미한다. 이 긴 문자열을 간단하게 표현하는 방법이..

Today I Learned/AWS 2022.06.28