728x90
728x90
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #6] Docker로 Jenkins 띄우기: CI/CD 개념부터 컨테이너 실행·초기 설정까지2025-04-22 22:35:43TL;DR — 3줄 핵심 요약• 문제: 서버에 Jenkins를 직접 설치하면 8080 포트가 이미 쓰이거나, JDK 버전이 꼬이거나, 지울 때 남는 파일이 생긴다. 이런 충돌을 없애려고 컨테이너에 넣어 실행한다.• 기술/원인: Docker 컨테이너는 이미지에 들어 있는 파일 시스템과 프로세스만 따로 띄우고, 바깥과는 포트 매핑(-p)과 볼륨(-v)으로만 연결한다. Jenkins의 설정과 작업 데이터는 /var/jenkins_home에 있으므로 이 디렉터리를 볼륨으로 빼 두면 컨테이너를 지워도 남는다.• 해결/인사이트: docker run 한 줄에 이름·포트·볼륨·재시작 정책을 모두 넣는다. 초기 비밀번호는 docker exec로 initialAdminPassword 파일을 읽어 얻고, 플러그인은 추천 세..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #5] 라즈베리파이5(ARM64) Ubuntu 24.04에 Docker Engine 공식 저장소로 설치하기2025-04-13 11:08:44TL;DR — 3줄 핵심 요약• 문제: 라즈베리파이 5는 CPU가 ARM64(aarch64)다. x86용으로 만든 설치 안내나 패키지를 그대로 쓰면 설치가 실패하거나 동작하지 않는다.• 기술/원인: apt는 sources.list에 적힌 저장소 주소와 아키텍처를 보고 패키지를 받는다. 아키텍처를 명시하지 않으면 엉뚱한 바이너리를 받을 수 있어, 공식 저장소를 추가할 때 arch=arm64로 고정한다.• 해결/인사이트: GPG 키를 /etc/apt/keyrings에 따로 저장하고 signed-by로 그 키만 신뢰하도록 지정한다. 설치 후에는 hello-world 컨테이너로 데몬·이미지 받기·실행이 모두 되는지 한 번에 확인한다.환경부터 확인한다lsb_release -a # Ubuntu 24.04,..
[ 시스템 & 인프라/PintOS & CS ][게임 인프라] 게임 산업의 주요 운영체제(OS) 비교: 콘솔(PS4·Xbox·Switch), PC(Windows·SteamOS), 모바일(Android·iOS) 아키텍처 분석2025-04-13 03:13:47들어가며운영 체제(OS)는 컴퓨터 시스템의 하드웨어 자원(CPU, GPU, 메모리, 저장 장치 등)을 관리하고, 응용 소프트웨어(게임 포함)가 하드웨어와 상호 작용할 수 있도록 인터페이스를 제공하는 필수적인 시스템 소프트웨어이다. 특히 게임 환경에서는 OS의 역할이 더욱 중요해진다. 게임은 실시간 상호작용, 높은 그래픽 처리 요구 사항, 낮은 지연 시간 등 극도로 까다로운 성능 조건을 요구하기 때문이다. OS는 이러한 요구 사항을 충족시키기 위해 자원 할당, 프로세스 스케줄링, 하드웨어 추상화, 보안 등의 기능을 효율적으로 수행해야 하며, 이는 게임의 성능, 안정성, 그리고 궁극적으로 사용자 경험에 직접적인 영향을 미친다. 게임 산업에서 사용되는 OS는 매우 다양하다. 특정 하드웨어에 맞춰 고도로 최적화..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #4] 라즈베리파이 VPN 구축: Tailscale vs WireGuard(PiVPN) 비교와 ufw 삽질기2025-04-09 16:30:10TL;DR — 3줄 핵심 요약• 문제: 집 안의 라즈베리파이에 밖에서 접속하려고 SSH(22)·RDP(3389) 포트를 공유기에 열어 두면, 전 세계의 자동 스캔 프로그램이 그 포트를 계속 두드린다.• 기술/원인: VPN은 두 기기 사이에 암호화된 가상 인터페이스(wg0, tailscale0)를 만들고, 그 인터페이스를 지나는 패킷만 암호화해 상대에게 보낸다. 그래서 바깥에는 VPN 포트 하나만 열려 있으면 되고, SSH·RDP는 터널 안쪽 주소로만 접근한다.• 해결/인사이트: 포트포워딩은 VPN 포트만 남기고 삭제한다. ufw는 기본 정책을 deny incoming으로 두고 VPN 인터페이스에서 들어오는 트래픽만 허용한다. 원격 작업 중 ufw를 잘못 만지면 접속이 끊기므로 콘솔 접근 수단을 먼저 확보..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #3] Ubuntu 24.04 원격 데스크톱: xrdp 대신 grdctl로 RDP 접속 붙이기2025-04-01 00:05:45TL;DR — 3줄 핵심 요약• 문제: 모니터 없이 돌리는 라즈베리파이에 화면을 붙이려면 원격 데스크톱이 필요하다. 예전 방식은 xrdp 패키지를 따로 설치하고 세션을 수동으로 연결해야 했다.• 기술/원인: Ubuntu 24.04에는 GNOME 원격 데스크톱이 기본 들어 있고, RDP 프로토콜로 화면을 보낸다. Wayland에서도 PipeWire로 화면 프레임을 가져와 RDP로 전송한다. 그래서 xrdp 없이 3389 포트 하나로 Windows·macOS·Linux 클라이언트가 모두 접속한다.• 해결/인사이트: 재부팅 뒤에도 접속하려면 Desktop Sharing이 아니라 Remote Login을 켜야 한다(로그인 화면까지 원격). 연결이 인증 직후 끊기면 rdp 파일을 export해 use redire..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #2] curl과 Makefile 제대로 쓰기: 주요 옵션부터 jq 연동·자동 변수까지2025-03-17 23:42:44TL;DR — 3줄 핵심 요약• 문제: 서버에 요청을 보내고 응답을 확인하는 일, 소스를 컴파일하는 일은 매번 반복된다. 이 두 반복을 명령 한 줄로 줄이는 도구가 curl과 make다.• 기술/원인: curl은 libcurl로 URL에 요청을 보내고 응답 바이트를 출력하거나 파일로 저장한다. make는 Makefile의 규칙(타겟: 의존성 → 명령)을 읽고, 의존성 파일의 수정 시각이 더 최신일 때만 명령을 실행한다.• 해결/인사이트: curl은 -s(조용히) -f(HTTP 오류를 실패로) -L(리다이렉트 추적) -o(파일 저장) 조합과 jq 파이프가 실무 기본형이다. make는 변수·자동 변수($@, $curl: URL에 요청을 보내는 도구1996년 다니엘 스텐버그가 IRC에서 환율 정보를 자동으로 ..
[ 시스템 & 인프라/Linux & DevOps ][리눅스 한 학기 살기 #1] 라즈베리파이5에 Ubuntu 24.04 설치하고 SSH 원격 접속까지2025-03-16 00:52:51TL;DR — 3줄 핵심 요약• 문제: "리눅스 한 학기 살기" 과제로 1주차에 리눅스를 설치하고 원격에서 접속 가능한 상태까지 만들어야 했다. 라즈베리파이5에 Ubuntu 24.04 LTS를 설치하고 SSH로 외부 접속을 확인하는 것이 목표였다.• 기술/원인: 원격 접속은 세 가지가 동시에 맞아야 성립한다. ① sshd가 22번 포트에서 대기 ② 방화벽(ufw)이 그 포트를 허용 ③ 공유기가 외부 포트를 내부 IP로 전달. 하나만 빠져도 연결되지 않는다.• 해결/인사이트: 순서를 지켜야 한다. ufw allow 22/tcp를 먼저 넣고 enable을 켠다. 바깥에서 접속하려면 공유기 포트포워딩과 DDNS(A 레코드)까지 설정하고, ssh 사용자@주소 -p 포트로 확인한다.무엇을 하려는 과제인가오픈소스S..
[ 시스템 & 인프라/PintOS & CS ][데이터베이스] DB 인덱스(Index) 핵심 원리: B-Tree 구조와 검색 성능 최적화2025-01-16 16:28:01TL;DR — 3줄 핵심 요약• 문제: 직무 테스트에서 데이터베이스 인덱스를 설명하는 문항을 다 쓰지 못했다. 백엔드와 모바일 게임 서버에서 인덱스 설계는 읽기 성능을 좌우한다.• 기술/원인: 인덱스는 컬럼 값과 레코드 위치를 정렬해 둔 별도 자료구조다. 조회는 그 구조에서 위치를 먼저 찾아 전체 스캔을 피하지만, 삽입·수정·삭제 때는 인덱스도 함께 갱신해야 한다.• 해결/인사이트: WHERE, JOIN, GROUP BY, ORDER BY에 자주 쓰이는 컬럼에 선택도가 높은 것부터 건다. 만든 뒤에는 EXPLAIN으로 실제 사용 여부를 확인해야 한다.들어가며: 직무 테스트에서 놓친 주제며칠 전 한 기업의 직무 테스트를 봤다. CS 기초 필기였는데, 데이터베이스 인덱스 문항을 끝까지 쓰지 못했다. 인덱스는..
728x90
728x90