[카테고리:] 프로그래밍

  • 리눅스 사지방 접속기 #2

    리눅스 사지방 접속기 #2

    에피타이저 필자가 군복무를 하던 시절은 2018년 ~ 2020년이다. 우리 부대에는 2019년 중·후반에 병사 휴대폰 제도가 도입됐다. 즉, 1년 반 정도는 인터넷을 하려면 사지방에 갔어야 했다. 그러나, 사지방의 네트워크 설정을 이상하게 해 놓아서 구글, 유튜브, 그 외 172.*로 시작하는 모든 서버에 접속이 제대로 되지 않았다. 172.*에는 172.30.1.1 처럼 내부망 대역이 있는데, 그 부분의 설정을 잘 못…

  • ARM서버용 Spring Boot Dockerfile (Dokku)

    ARM서버용 Spring Boot Dockerfile (Dokku)

    필자는 2개의 서버를 돌리고 있다. 하나는 잡탕구리 서버이고, 나머지 하나는 서비스 전용 서버이다. 원래는 잡탕구리 서버에서 모든걸 다 돌렸었다. 그러다가 dokku에 정착하면서 조금 달라졌다. 필자가 처음 Dokku를 쓸 때만 해도 ARMv8을 제대로 지원하지 못했다. 그래서 AMD64용 서버를 하나 더 돌려 사용했다. 서버를 두개씩 돌리니까 서버비가 꽤 나오기 시작했다. 사실 이전에는 부담이 아니었는데, 환율이 오르니까 앞자리가…

  • 분산 시스템의 기초 개론 – 2

    이전 글에서 Write-Ahead-Log, Leader and Follower, Version Control, Majority Quorum, Generation Clock에 대해 언급 했다. 이번 글에서는 그 이후의 것을 알아본다. 이 글은 “Patterns of Distributed Systems” (Unmesh Joshi)의 책을 기초로 쓰였다. Write-Ahead-Log(WAL): 모든 단위 작업을 디스크에 기록한다. 디스크에 기록이 완료된 작업만이 완료(Commit) 처리 될 수 있다. 시스템에 장애가 발생해도 Log를 Replay하여 복구 할 수…

  • 유해 차단을 회피하는 사이트

    유해 차단을 회피하는 사이트

    사이트를 유해 사이트로 분류하며 각 통신사에 차단 지시를 내리는 곳은 “방송통신심의위원회” 이다. 방송통신심의위원회의 차단 의결에도 불구하고, 불법 유해 사이트들 중에서 warning.or.kr 페이지를 회피 기동하는 곳이 심심치 않게 보인다. 이 사이트들은 크게 두가지로 부류로 나뉘어 진다. (1) 뉴토끼 처럼 도메인을 계속 구매하는 곳과 (2) IP 주소를 주기적으로 변경하는 곳으로 나뉘어 진다. 방송통신심의위원회(이하 방심위)에서 이미 상황을 알고…

  • Dokku를 이용한 Sveltekit 배포 스크립트

    Dokku를 이용한 Sveltekit 배포 스크립트

    이때껏 Sveltekit로 간단한 사이트를 몇 개 만들었다. 매번 수동으로 Dokku를 설정하는 것이 번거로워서 이 글에 설정법을 간단히 정리한다. 이 글은 adapter-node 만을 다룬다. adapter-node의 기본 설정 방법은 https://svelte.dev/docs/kit/adapter-node 에서 확인할 수 있다. 다른 어뎁터로 빌드했다면 적용되지 않는다. Dokku에 프로젝트를 올리면 herokuish가 package-lock.json 와 package.json 를 확인하여 npm 프로젝트로 인식한다. 그리고 알아서 nodejs 빌드팩으로 프로젝트를 빌드한다.…

  • BYOIP를 이용한 Anycast의 라우팅 리전(지역) 관찰기 (Vultr)

    BYOIP를 이용한 Anycast의 라우팅 리전(지역) 관찰기 (Vultr)

    이전 글에서 IPXO에서 IP를 임대한 후, BYOIP와 BGP를 이용하여 VM에 IP를 적용 시키는 것을 해 보았다. 이번 글에서는 여러 리전에서 BGP를 발사해 볼 예정이다. 실제로 BGP 전파시에 얼마나 시간이 걸리는지에 대한 글이 전무했는데, 이 글에서는 실제 Anycast 사용 경험을 작성한다. 이전 글을 못 읽은 분들을 위해 간략히 BGP를 설명하려 한다. 본인이 IP주소를 가지고 있다면 주변…

  • IPXO 에서 IP블록(/24) 임대 후 BYOIP 사용해 보기

    IPXO 에서 IP블록(/24) 임대 후 BYOIP 사용해 보기

    전체 과정 이 글에서는 Oracle Cloud와 Vultr에서 Bring your own IP 를 사용하는 방법을 다룬다. 궁극적으로, 몇개의 글에 걸쳐 BYOIP가 잘 작동하는지와 Anycast가 예상대로 진행되는지를 다룰 것이다. 전체적인 과정 자체는 AWS, GCP에서도 유사 할 것이다. Bring Your Own IP를 사용하기 위한 과정은 크게 다음과 같다. BYOIP를 사용하기 위한 비용은 다음과 같이 쓰였다. (업체 및 IP…

  • Linux TUN 장치 기본 다루기

    Linux TUN 장치 기본 다루기

    리눅스에서 TUN 인터페이스를 이용해서 이전에 썻던 Mutli-Path 오버레이 네트워크를 만들고 있다. 현재는 TUN 제어 자체는 어떻게 됐는데, UDP 소켓을 관리하고 연결 정보를 처리하는데 조금 어려움이 있다. 연결 관리 구조체 하나를 상위의 전체 관리 모듈과 본인 스스로에게서 접근하려다 보니 소유권이 발목을 잡는다. 생각해둔 방법이 없진 않은데, 아무래도 코드가 더러워지는것 같아서 꺼려진다. 각설하고, 개발간 초보 TUN 개발자가…

  • (가칭) multipath overlay network에 관한 상상코딩

    (가칭) multipath overlay network에 관한 상상코딩

    상상해 보자. 당신은 데이터 송·수신이 중요한 시스템을 만들고 있다. 해당 시스템에서는 잠시간의 네트워크 단절이 큰 영향을 미친다. 그러나 안타깝게도, 불안정한 네트워크 속에서 서비스를 진행해야 한다. 예를 들어, 해외 서버와 지속적인 통신을 해야할 경우가 있다 하자. 해외 트레픽이 넘처나는 22시 즈음이 되면 최대 30%의 확률로 Packet loss가 발생한다. 사내 네트워크와 IDC내 서버간 연결이 필요할 수도 있다.…

  • 분산 시스템의 기초 개론 – 1

    분산 시스템의 기초 개론 – 1

    분산 시스템이란 분산 시스템이란 공동의 목표를 달성하기 위해 여러 노드 또는 서버가 서로 연결된 소프트웨어 아키텍처다. 이 노드들은 네트워크를 통해 서로 통신하고 각자의 작업을 조정하여 통합되고 확장 가능한 컴퓨팅 환경을 제공한다. Patterns of Distributed Systems (2023) 분산 시스템 내에서 작업 부하는 여러 서버에서 처리될 수 있어야 한다. 즉, 수평 확장을 통해서 요청을 동시 처리할 수…