본문 바로가기

분류 전체보기

(388)
[삽질기록] padding이 없는 속성이라고? — ESLint CSS 플러그인 오픈소스 기여기 사이드 프로젝트에서 CSS를 린트하다 만난 황당한 에러 하나가 오픈소스 기여로 이어졌다. 에러를 의심하는 것부터 PR이 머지되기까지의 과정을 기록해보려 한다.🚨 문제 상황모바일 웹앱을 만들면서 아이폰에서 탭바 버튼이 인디케이터와 겹쳐 탭이 잘 안되는 문제가 있었다. 이 문제는 env(safe-area-inset-*)로 해결하는 전형적인 문제다. 값을 여기저기서 쓰게 될 것 같아 커스텀 프로퍼티로 정리해뒀다.:root { --tab-height: 60px; --safe-top: env(safe-area-inset-top, 0px); --safe-bottom: env(safe-area-inset-bottom, 0px);}.tab-bar { display: flex; height: calc(var(--ta..
[GCP] 공유 VPC, VPC 페어링 공유 VPC(Shared VPC)회사에 프로젝트가 10개 있다고 해보자. 각 팀이 자기 프로젝트에 VPC를 따로 만들면? 네트워크가 10개로 쪼개져서 서로 통신 안 되고, 방화벽 정책도 제각각이라 보안 관리가 엉망이 된다. 이 문제를 해결하는 것이 공유 VPC이다. 하나의 VPC를 여러 프로젝트가 공유, 중앙 관리한다. - 호스트 프로젝트: VPC를 소유. 네트워크 팀이 중앙에서 서브넷, 방화벽 관리- 서비스 프로젝트: VPC를 빌려 씀. 각 팀이 VM은 자기 프로젝트에 만들지만, VPC는 호스트 것 사용 공유 VPC는 조직 레벨이 필요하고, 개인 계정으로는 못 만든다.공유 VPC를 사용하면 네트워크는 중앙에서 일관되게 관리하고, 리소스(VM)과 과금은 팀별로 분리할 수 있다. 그리고 다른 프로젝트의 V..
[GCP] Cloud NAT으로 외부 IP 없는 VM의 인터넷 접속 허용하기 지금까지 만든 VM들은 외부 IP가 있었다. 그런데 외부 IP가 있다는 건 인터넷에서 그 VM으로 직접 접근이 가능하다는 뜻이다. 보안상 위험하다. 그래서 실무에선 백엔드 VM에 외부 IP를 안 준다. 하지만 이 경우에 VM이 apt update로 패키지를 받거나 외부 API를 호출해야 할 때 나가는 통로가 없는 문제가 생긴다. Cloud NAT은 이 문제를 해결한다. 외부 IP가 없는 VM들이 나가는 트래픽만 인터넷에 접근할 수 있게 해주는 서비스이다.[외부IP 없는 VM] -----> [Cloud NAT] -----> 인터넷 ✅ 나가기 가능 [외부IP 없는 VM] ----- 인터넷 ❌ 들어오기 불가집의 공유기와 같은 원리이다. 집 안 기기들은 인터넷에 나갈 수 있지만, 밖에서 집 안..
[GCP] 로드밸런싱(HTTP LB 구성요소) 로드밸런서란MIG는 VM을 2~5대로 자동 확장한다. [GCP] 인스턴스 그룹(템플릿, 자동 확장)인스턴스 그룹여러 VM을 하나의 단위로 묶어서 관리하는 것 1) 관리형 인스턴스 그룹(MIG, Managed Instance Group)- 템플릿을 기반으로 똑같은 VM을 여러 개 자동 생성, 관리- 자동 확장, 자동 복구(VM 죽으winterflower.tistory.com그런데 사용자는 접속할 때 어느 VM으로 가야할까? VM마다 IP가 다른데? 한 VM이 죽으면?이걸 해결하는게 로드밸런서다. 로드밸런서 앞에 하나의 진입접(IP)이 있고, 들어온 요청을 뒤의 여러 VM에 알아서 분배한다. 로드밸런싱을 하면 다음과 같은 이점이 있다.1. 부하 분산: 요청을 여러 VM에 나눠 과부하 방지2. 고가용성: V..
[삽질기록] 특정 PC에서만 애드몹·애널리틱스·Firebase 접속이 안 되는 문제(사설 DNS 차단 우회하기) 🚨 문제 상황애드몹과 구글 애널러틱스 콘솔, firebase 애널러틱스 등 구글 광고·추적 계열 도메인이 특정 컴퓨터에서만 안 열렸다.브라우저에는 서버 IP를 찾을 수 없다는 메시지가 떴다. 개발자 도구 콘솔을 열어보니 구글 관련 도메인들이 줄줄이 죽어 있었다.🤔 원인ERR_NAME_NOT_RESOLVED는 DNS가 도메인 이름을 IP로 변환하지 못했다는 뜻이다. 즉 서버가 죽은 게 아니라, 이 PC가 구글 도메인의 주소를 못 찾고 있는 상황이었다. 그래서 nsloopup으로 도메인을 직접 조회해봤다. 여기서 두 가지가 결정적이었다. 첫째, 응답 IP가 0.0.0.0이다. 정상이라면 진짜 구글 IP가 나와야 한다. 0.0.0.0은 어디에도 연결되지 않은 주소로, DNS가 이 도메인을 일부러 차단할 때..
[GCP] Cloud Storage(버킷, 스토리지 클래스) Cloud Storage는 파일을 "객체"로 저장하는 객체 스토리지다. VM에 붙이는 영구 디스크)랑 완전히 다르다.영구 디스크 vs Cloud Storage- 영구 디스크: VM에 붙여서 OS, DB가 쓰는 저장장치(블록 스토리지)- Cloud Storage: VM 없이 독립적으로 파일 보관, 제공(객체 스토리지) HTTP로 접근, 무제한 확장, 정적 웹사이트 호스팅 가능앱에서 사용자가 업로드한 이미지를 저장한다면? VM 디스크에 저장하면 VM 죽을 때 위험하고 확장도 어렵다. Cloud Storage 버킷에 넣으면 VM과 무관하게 안전하고, URL로 바로 서빙도 된다. 실무에서 파일 저장은 거의 이걸 쓴다. 버킷(Bucket)버킷은 Cloud Storage의 최상위 컨테이너이다. 모든 파일(객체)은 ..
[GCP] 인스턴스 그룹(템플릿, 자동 확장) 인스턴스 그룹여러 VM을 하나의 단위로 묶어서 관리하는 것 1) 관리형 인스턴스 그룹(MIG, Managed Instance Group)- 템플릿을 기반으로 똑같은 VM을 여러 개 자동 생성, 관리- 자동 확장, 자동 복구(VM 죽으면 자동으로 새로 띄움), 롤링 업데이트 가능- 실무에서 거의 이거 사용 2) 비관리형 인스턴스 그룹(UMIG, Unmanaged Instance Group)- 서로 다른 사양의 VM을 그냥 묶기만 함- 자동 확장, 자동 복구 안 됨인스턴스 템플릿MIG를 만들려면 먼저 템플릿이 필요하다. VM의 머신 타입, 디스크, 이미지, 네트워크, 시작 스크립트 등 사양을 미리 정의해둔 설계도이다. 템플릿은 한 번 만들면 수정이 불가능하다. 사양을 바꾸려면 새 템플릿을 만들어서 MIG에 ..
[GCP] VM 구성 요소(머신 타입, 디스크, 스냅샷) VM을 구성하는 요소들을 알아보자.1) 머신 타입VM의 CPU, 메모리 사양이다. 크게 계열(family)로 나뉜다. 종류- 범용: 가장 흔하게 쓴다. 웹서버, 앱서버 등 - E2(가장 저렴, 비용 최적화) / N2, N2D, N1(E2보다 성능 좋음) / C3 등 최신 세대- 컴퓨팅 최적화: CPU 성능이 핵심일 때. 게임 서버, 고성능 연산 - C2- 메모리 최적화: RAM이 많이 필요할 때. - M1, M2- 가속기 최적화: GPU 붙은 거 - A2 다음 명령어를 통해 머신 타입 종류를 직접 볼 수 있다.gcloud compute machine-types list --filter="zone:asia-northeast3-a" --limit=202) 영구 디스크VM의 저장장치(디스크). VM과 분리된 ..