Go, Vantage point
가까운 곳을 걷지 않고 서는 먼 곳을 갈 수 없다.
Github | https://github.com/overnew/
Blog | https://everenew.tistory.com/
알림 서비스가 분산 시스템을 사용하는 이유 애플리케이션으로 알림을 보내는 대표적인 서비스는 FCM(andriod)과 ARNs(IOS)이 있다.애플리케이션뿐만 아니라 이메일이나 slack 메시지 등 알림 서비스는 다양한 매체에 적용된다. 이러한 알림 서비스에서는 가장 중요한 것이 알림 데이터 손실을 방지하는 것이다.만약 단일 시스템을 사용한다면 single point of failure(단일 장애지점)이 되기 때문에 리스크가 크다.따라서 메시지를 보내는 앞단에 메시지 큐(Apache Kafka, RabbitMQ 등)를 적용하게 된다. 이러한 메시지 큐들도 결국 단일 장애지점을 피하기 위해 분산 시스템이 사용된다. 분산시스템의 Trade-off 그런데 여러 서버를 배치하는 분산 시스템에서는 정확히 한..
커스텀 명령어리눅스 쉘에 커스텀 명령어를 만들어보자. 리눅스 명령어에는 타입이 존재한다. 위와 같이 type 명령어를 통해서 명령어의 타입을 확인할 수 있다.cd와 같이 기본적인 셀 자체 내장의 명령어는 shell builtin으로으로 출력되지만외부 명령어인 mv, cp는 명령어 파일이 저장된 위치가 출력된다. 명령어 파일의 디렉터리모든 것이 파일인 리눅스에서는 명령어도 결국 파일로 이루어진다. 파일을 실행하기 위해서는 경로와 이름을 사용해서 실행한다.Ex) ./myfile 하지만 환경 변수인 PATH에 경로 정보를 등록하면 파일을 실행하기 위한 경로를 생략할 수 있다.따라서 경로 지정이 명령어 실행 시 현재 폴더에 해당 파일이 없다면, PATH에 등록된 정보를 통해 실행 가능한 명령어인지 확인하..
네이버 클라우드는 프리티어로 3개월간 사용가능한 10만 원의 크레딧 제공한다.이 크레딧을 활용해서 웹서버를 띄워보며 AWS와의 차이점을 확인해 보자. 1. VPC 생성AWS와 동일하게 VPC부터 생성해주어야 한다. AWS와 다르게 VPC의 IP 범위를 추천해주지 않는 것이 특이하다.생성 자체도 생각보다 느려서, 거의 몇 분 정도가 소요된다. 2. Subnet 생성 VPC에서는 subnet 안에 리소스를 배치할 수 있으므로 Subnet을 생성해 주자. 서브넷은 AWS와 동일하게 가용 영역 단위이며, 가용 영역은 한국에도 두 곳 밖에 제공되지 않는다. 특이한 것은 subnet의 용도를 생성 시에 결정할 수 있다.우리는 일단 public 하게 웹서버를 열어볼 것이므로 일반을 선택하자. 3. ..
문제 https://school.programmers.co.kr/learn/courses/30/lessons/340212 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 풀이 난이도: Lv.2 일단 정답은 문제들 중 최대 diff(난이도) 만큼의 level(숙련도)의 이하일 것이다.level 최대 diff보다 높아도 이미 모든 문제를 한 번의 시도로 풀 수 있기 때문에 의미가 없다. 따라서 1 ~ max_diff 사이에 정답이 있다.가장 간단히는 max_diff부터 순서대로 숙련도를 1씩 줄이면서 시간 안에 문제를 풀어보는 브루트 포스 방법을 생각할 수 있..
실시간 채팅 서비스를 만든다고 가정해 보자.이런 서비스에서 HTTP를 기반으로 메시지를 주고받는다면 어떻게 될까? HTTP(7계층)HTTP의 경우 stateless 서비스이다. (연결성의 보장은 4계층인 TCP의 역할)따라서 HTTP는 상대의 요청에 의한 Response만 가능하기 때문에 아래와 같이 클라이언트가 주기적으로 서버에 새로운 메시지의 여부를 물어보게 된다.이러한 과정을 폴링이라고 한다. 이런 과정은 당연히 폴링의 주기에 따라 서버의 부하가 달라진다.실시간 채팅이라면 연결과 해제가 수도 없이 발생하여 비효율적이다. 이런 문제를 해결하기 위해 롱 폴링 기법 사용된다. 롱 폴링은 연결 후 응답이 오거나 time out까지 연결을 유지할 수 있다.하지만 채팅이 적다면 time out마다 재연..
URL 링크 단축이란? 아래와 같이 긴 URL은 공유 시, 텍스트 크기가 굉장히 길어지는 단점이 있다.https://www.google.com/search?q=%EB%A7%81%ED%81%AC+%EB%8B%A8%EC%B6%95&oq=%EB%A7%81%ED%81%AC+%EB%8B%A8%EC%B6%95&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIGCAEQRRg90gEINzcxNmowajGoAgCwAgE&sourceid=chrome&ie=UTF-8 🔎 링크 단축: Google 검색 www.google.com 이런 URL은 메시지나 SNS 공유를 위해 사용하기에는 불편하고 보기도 좋지 않다.이를 위해 최근에는 아래와 같이 같은 링크를 단축된 길이의 URL로 변환해서 공유를 하는 경우가 많다. ..
저번 게시글에서는 AWS IPv6 전용의 Egress only IGW를 다뤄보았다.EC2에서는 IPv4와 IPv6가 모두 사용가능한데, 실제 통신에 사용되는 것은 어떤 것일까? 일단 변하지 않는 원리는 하나다.IPv4 주소는 IPv4로, IPv6 주소는 IPv6로 통신한다.IPv4와 IPv6는 엄연히 구조가 다른 주소 체계이므로 하나를 안다고 다른 하나를 유추할 수는 없다. 두 가지 주소를 모두 지원한다면 어떤 주소 방식으로 통신할지는 아래의 과정을 따른다. 1. DNS 조회서버의 IP를 DNS 서버로부터 쿼리한다.이때 해당 서버가 IPv4 주소만 가진다면 IPv4로, IPv6 주소만 가진다면 IPv6로 통신하게 된다.(다른 IP 주소를 유추할 수 없으므로 방법이 없다. )하지만 서버가 IPv4와..
Docker 컨테이너들의 대부분은 리눅스 컨테이너로 만들어졌다. 하지만 AWS의 ECS(Docker engine base) 세팅에서 알 수 있듯이, Windows OS인 EC2 상에서도 리눅스 컨테이너는 동작할 수 있다.Windows에서는 리눅스 컨테이너가 어떤식으로 동작하는지 알아보자. WSL(Windows Subsystem for Linux)Windows OS를 사용한다면, 리눅스 환경을 위해 타입 1 혹은 2의 하이퍼바이저를 통해 리눅스 가상머신을 실행해야 한다.하지만 WSL을 사용하면, 별도의 가상머신 없이도 Windows OS에서도 리눅스 환경을 제공받아 리눅스 명령어를 실행할 수 있게 된다.WSL 1과 2는 구조적 차이가 존재한다. WSL 11버전에서는 Linux 커널 요청인 Sys..
IPv6는 NAT GW가 아니라 Egress Only Internet Gateway 서비스로 트래픽을 외부로 보내는 걸까?이 이유를 IPv4와 IPv6의 특징을 통해 알아보자. IPv4의 NAT(Network address translation) 한국은 인구 대비 많은 IPv4를 부여받았고, AWS가 많은 공인 IPv4를 사들여서 AWS에서는 공인 IPv4를 쉽게 이용할 수 있다. (국내 IP의 50% 가까이 점유했다는 말이 있다;;) 하지만 IPv4는 이미 전 세계적으로 고갈되고 있고, AWS에서도 이제 EIP와 같은 공인 IPv4 사용에 대한 유료화 정책을 추진하고 있다. 이미 고갈된 상태의 IPv4 체계가 아직까지 잘 사용되는 이유는 NAT의 역할이 크다.VPC에서를 예를 들면, ALB의 공..
ECS의 태스크를 정의할 때 네트워크 모드를 선택하게 된다.AWS에서는 특별한 이유가 없다면 awsvpc를 권장하는데, 네트워크 모드마다 어떤 식으로 차이점이 있는지 살펴보자. 1. awsvpc 모드awsvpc는 EC2와 동일한 네트워크 속성을 사용한다. 각 태스크에 ENI를 통해 private IPv4 주소가 부여되기 때문에, EC2에서 사용하던 방식대로 ECS의 각 태스크를 사용할 수 있게 된다.단, 태스크의 ENI는 조작할 수 없고 태스크 중지 시 자동으로 분리/삭제된다. 이때 ECS 컨테이너 에이전트가 각 태스크에 대한 pause 컨테이너를 생성하기 때문에, 같은 태스크의 컨테이너들은 pasuse 컨테이너를 통해 네트워크 네임스페이스를 공유한다.따라서 같은 태스크 내의 컨테이너는 동일한 E..