<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>ercan.cloud</title><link>https://ercan.cloud/ko/</link><description>Recent content on ercan.cloud</description><generator>Hugo</generator><language>ko-KR</language><copyright>© Ercan Ermis</copyright><lastBuildDate>Wed, 22 Jul 2026 15:03:49 +0200</lastBuildDate><atom:link href="https://ercan.cloud/ko/index.xml" rel="self" type="application/rss+xml"/><item><title>AWS 에이전트 인증: OIDC는 들이고, 액세스 키는 내보낸다</title><link>https://ercan.cloud/ko/agent-auth-on-aws-oidc-in-access-keys-out/</link><pubDate>Tue, 21 Jul 2026 01:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/agent-auth-on-aws-oidc-in-access-keys-out/</guid><description>&lt;p&gt;&lt;strong&gt;AWS 위에서 실행되거나 AWS를 대상으로 동작하는 에이전트는 장기 자격 증명을 절대 보유해서는 안 된다.&lt;/strong&gt; IAM 사용자도, 시크릿 매니저에 넣어둔 액세스 키도, 공유 "agents" 서비스 계정도 마찬가지다. AWS가 제공하는 진지한 인증 경로, 즉 인스턴스 프로파일, IRSA, EKS Pod Identity, OIDC 페더레이션, IAM Roles Anywhere, AgentCore Identity는 전부 같은 일을 하기 위해 존재한다: 검증 가능한 신원 증명을 스스로 만료되는 임시 자격 증명으로 교환하는 것이다. 에이전트 플랫폼이 이 규칙에서 출발하면 어려운 질문 대부분은 저절로 답이 나온다.&lt;/p&gt;</description></item><item><title>Agent Toolkit for AWS: 문서에 새로운 독자가 생겼습니다</title><link>https://ercan.cloud/ko/agent-toolkit-for-aws-the-docs-have-a-new-reader/</link><pubDate>Mon, 20 Jul 2026 09:30:00 +0200</pubDate><guid>https://ercan.cloud/ko/agent-toolkit-for-aws-the-docs-have-a-new-reader/</guid><description>&lt;p&gt;&lt;strong&gt;AWS가 이번 주 콘솔에 새 카드를 추가했습니다: Agent Toolkit for AWS입니다. 무료이고, 정식 출시 상태이며, Claude Code, Codex, Cursor, Kiro와 함께 동작합니다. 설정 프롬프트 하나로 코딩 에이전트에 AWS API용 MCP 서버, 흔한 작업을 위한 선별된 스킬, IAM 가드레일이 주어집니다. 툴킷 자체도 유용합니다. 하지만 이 툴킷이 인정하는 사실이 더 큽니다: AWS 문서의 주요 독자는 더 이상 사람이 아닙니다.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;패키지에 담긴 것&lt;/h2&gt;
&lt;p&gt;세 개의 레이어로 구성되며, 각각 독립적으로 동작합니다:&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;
&lt;li&gt;&lt;strong&gt;AWS MCP Server.&lt;/strong&gt; 에이전트가 &lt;code&gt;mcp-proxy-for-aws&lt;/code&gt;를 통해 접근하는 호스팅 엔드포인트(&lt;code&gt;aws-mcp.us-east-1.api.aws&lt;/code&gt;)입니다. 에이전트에 AWS API 접근, 샌드박스 스크립트 실행, 실시간 문서 검색을 제공합니다. 자격 증명은 API 호출에만 필요하며, 문서 검색은 자격 증명 없이도 동작합니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;플러그인.&lt;/strong&gt; &lt;code&gt;aws-core&lt;/code&gt;는 서비스 선택, CDK와 CloudFormation, 서버리스, 컨테이너, 스토리지, 옵저버빌리티, 빌링을 다룹니다. &lt;code&gt;aws-agents&lt;/code&gt;는 Bedrock과 AgentCore 스킬을 추가하고, &lt;code&gt;aws-data-analytics&lt;/code&gt;와 &lt;code&gt;aws-agents-for-devsecops&lt;/code&gt;는 각자의 도메인을 담당합니다. Claude Code에서는 공식 플러그인 마켓플레이스에서 &lt;code&gt;/plugin install&lt;/code&gt; 한 번으로 설치됩니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;스킬.&lt;/strong&gt; &lt;code&gt;npx skills add aws/agent-toolkit-for-aws/skills&lt;/code&gt;로 설치하는 선별된 작업 지침입니다. 온디맨드로 로드됩니다: 에이전트가 현재 작업에 맞는 것만 가져오므로, 실제로 쓰이기 전까지는 아무 비용도 들지 않습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;인증은 새로운 브라우저 기반 &lt;code&gt;aws login&lt;/code&gt; 흐름으로 진행되며, &lt;code&gt;aws sts get-caller-identity&lt;/code&gt;로 검증합니다. 터미널에서 주로 생활하신다면 &lt;code&gt;aws configure agent-toolkit&lt;/code&gt;이 AWS CLI를 통해 같은 것을 연결해 줍니다.&lt;/p&gt;</description></item><item><title>FinOps: 다음 25억 달러 AWS 청구서가 오기 전에 Terraform으로 예산 알림 만들기</title><link>https://ercan.cloud/ko/finops-budget-alerts-with-terraform/</link><pubDate>Fri, 17 Jul 2026 18:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/finops-budget-alerts-with-terraform/</guid><description>&lt;p&gt;&lt;strong&gt;7월 17일, AWS Cost Explorer가 일부 고객에게 수백만, 수십억, 몇몇 스크린샷에서는 수조 달러의 예상 청구액을 표시했다. 숫자는 잘못된 것이었고, 실제로 청구된 사람은 없었으며, AWS는 하루 안에 데이터를 바로잡았다. 기억해 둘 만한 대목은 따로 있다. 이 이상을 가장 먼저 알아챈 사람들은 빌링 알림을 설정해 둔 쪽이었다. 이 글은 Terraform의 &lt;code&gt;aws_budgets_budget&lt;/code&gt;으로 그 알림을 설정하는 101 가이드다. 단순한 월간 비용 알림부터 사용량 예산, Savings Plan 사용률 추적까지 다룬다.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;그날 아침 LinkedIn이나 X를 연 사람이라면 누구나 같은 피드를 봤다. 웬만한 국가 예산보다 자릿수가 많은 AWS 청구 예상액 스크린샷들이었다. 전달에 0.19달러를 낸 어느 사용자는 25억 달러에 가까운 예상액을 봤고, 2조 5천억 달러까지 찍힌 숫자를 올린 사람들도 있었다.&lt;/p&gt;</description></item><item><title>아무도 테스트하지 않는 가정을 테스트하기</title><link>https://ercan.cloud/ko/nothing-fails-alone-part-4-testing-the-assumption/</link><pubDate>Wed, 15 Jul 2026 09:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/nothing-fails-alone-part-4-testing-the-assumption/</guid><description>&lt;p&gt;&lt;strong&gt;이 시리즈의 하중을 받치는 두 가정 모두 오늘, 관리형 서비스로, 한 오후에 테스트할 수 있다. AWS Fault Injection Service는 "AZ Availability: Power Interruption"이라는 시나리오를 제공하는데, 이것은 한 가용 영역의 태그된 모든 인스턴스를 정지시키고, 그것들을 교체하려는 Auto Scaling 그룹에 &lt;code&gt;InsufficientInstanceCapacity&lt;/code&gt; 오류를 먹이며, EBS 볼륨 IO를 일시 정지하고, 서브넷 트래픽을 끊은 뒤, 결함을 걷어 내고 정지시켰던 것을 다시 시작한다. 3부의 컨트롤 플레인 가정에는 기성품 결함이 없지만, 그것의 정직한 근사는 JSON 파일 하나와 IAM deny 하나에 들어간다. 거의 아무도 어느 쪽도 돌리지 않으며, 그 이유는 도구가 아니다. 이유는 테스트는 실패할 수 있지만 가정은 실패할 수 없다는 것이다.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>클라우드로 클라우드 점검하기: M365 Security 포스처 스캐닝 101</title><link>https://ercan.cloud/ko/checking-cloud-with-cloud-m365-security-posture-scanning-101/</link><pubDate>Fri, 03 Jul 2026 13:35:00 +0200</pubDate><guid>https://ercan.cloud/ko/checking-cloud-with-cloud-m365-security-posture-scanning-101/</guid><description>&lt;p&gt;&lt;strong&gt;Microsoft 365 테넌트는 클라우드 인프라다. Entra ID, Exchange Online, SharePoint, Teams에 걸친 수백 개의 보안 관련 설정이 있고, 이 설정들은 관리되지 않는 AWS 계정과 똑같이 드리프트한다.&lt;/strong&gt; 관리자가 장애 대응 중에 설정 하나를 바꾸고 되돌리지 않는다. Microsoft가 서비스 업데이트로 기본값을 바꾼다. 두 분기 전에 끝난 파일럿 때문에 외부 업체가 여전히 게스트 접근 권한을 갖고 있다. 아무도 이것을 검토하지 않는다. 테넌트는 "IT의 일"이지 "인프라의 일"이 아니라고 여겨지기 때문이다. 포스처 스캐닝은 지루하지만 효과적인 해법이다: 테넌트의 실제 구성을 공개된 보안 베이스라인과 지속적으로 비교하고 격차를 보고한다. 그리고 2026년에 그 스캐너를 돌리는 현실적인 방법은 SaaS다. 즉 클라우드로 클라우드를 점검하는 셈이다. 이 글은 그 101이며, &lt;a href="https://aether365.io"&gt;Aether365&lt;/a&gt;를 예시로 사용한다. 미리 밝혀두면 Aether365는 내 제품이다.&lt;/p&gt;</description></item><item><title>수정은 장애와 운명을 공유한다</title><link>https://ercan.cloud/ko/nothing-fails-alone-part-3-fix-shares-fate/</link><pubDate>Wed, 01 Jul 2026 09:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/nothing-fails-alone-part-3-fix-shares-fate/</guid><description>&lt;p&gt;&lt;strong&gt;모든 복구 계획은 첫 번째보다 조용한 두 번째 가정을 품고 있다. 첫 번째는 인프라의 일부가 사건에서 살아남는다는 것이고, 이 시리즈의 1부와 2부가 그것을 시험했다. 두 번째는 사건이 왔을 때 여전히 수정을 배포할 수 있다는 것이다. API가 응답하고, 콘솔이 로드되며, 파이프라인이 역할을 assume할 수 있고, Auto Scaling 그룹이 교체분을 띄울 수 있다는 것. 2023년 6월 13일, Lambda의 컴퓨트 용량을 관리하는 서브시스템의 잠복 결함이 us-east-1에서 함수 호출을 저하시켰고, 이후 네 시간 중 일부 동안 그 리전의 AWS Management Console은 오류 페이지를 서빙했으며 STS는 높은 오류율을 던졌다. 그날 대부분 고객의 인프라에서는 아무것도 망가지지 않았다. 망가진 것은 그들이 그것을 고치는 데 썼을 계층이었다. 컨트롤 플레인이 blast radius 안에 있으면, 수습 경로는 장애 도메인 안에 있다.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>AWS Lambda MicroVMs: 서버리스에 상태 유지형 격리 샌드박스가 생기다</title><link>https://ercan.cloud/ko/aws-lambda-microvms-serverless-sandboxes/</link><pubDate>Tue, 23 Jun 2026 02:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/aws-lambda-microvms-serverless-sandboxes/</guid><description>&lt;p&gt;&lt;strong&gt;AWS Lambda MicroVMs는 가상 머신 수준의 격리, snapshot에서의 거의 즉각적인 실행, 그리고 일시 중단 후 재개할 수 있는 상태 유지형 실행을 제공하는 새로운 서버리스 컴퓨트 프리미티브다.&lt;/strong&gt; 이미 월 15조 회가 넘는 Lambda 호출을 떠받치고 있는 그 가벼운 가상화 기술, Firecracker 위에서 동작한다. 짧게 요약하면 이렇다. Lambda가 각 세션에 전용의, 격리된, 오래 살아남는 샌드박스를 건네줄 수 있게 됐고, 그것도 사용자가 직접 가상화를 관리하지 않고도 가능해졌다.&lt;/p&gt;
&lt;p&gt;여러분의 애플리케이션이 직접 작성하지 않은 코드를 안전하게 실행하려고 시도해 본 적이 있다면, 멀티 테넌트 코드 실행, 인터랙티브 노트북, 취약점 스캐너 같은 작업이라면, 이게 왜 중요한지 이미 알 것이다. 지금까지의 솔직한 답은 "컨테이너나 VM을 띄우고 오케스트레이션, 격리, 라이프사이클 배관을 직접 구축하라"였다. MicroVMs는 그 모든 것을 API 호출 하나로 압축한다.&lt;/p&gt;</description></item><item><title>전화번호 없으면 계정도 없다: Google의 QR 장벽과 GDPR</title><link>https://ercan.cloud/ko/google-qr-phone-verification-gdpr/</link><pubDate>Thu, 18 Jun 2026 01:30:00 +0200</pubDate><guid>https://ercan.cloud/ko/google-qr-phone-verification-gdpr/</guid><description>&lt;p&gt;오늘 Google 계정을 만들어 보려고 하면 이름 한 글자를 입력하기도 전에 장벽에 부딪힐 수 있다. 화면에는 "&lt;strong&gt;계정을 만들기 전에 정보를 확인하세요&lt;/strong&gt;"라고 적혀 있고, QR 코드가 표시되며, 휴대폰 카메라로 스캔하라고 한다. 클릭할 링크도, 이메일 대체 수단도, "건너뛰기" 경로도 없다. 카메라가 작동하는 스마트폰이 없으면 계정도 없다. 이게 상호작용의 전부이며, 한 번쯤 멈춰서 들여다볼 가치가 있다. 이 화면이 조용히 전화기를 웹 사용의 전제 조건으로 바꿔 놓고 있기 때문이다.&lt;/p&gt;
&lt;p&gt;나는 EU 안쪽인 네덜란드에서 살고 있는데, 그 화면의 문구("Google은 귀하의 기기 또는 전화번호에 관한 정보를 확인해야 합니다")는 보안 기능이라기보다 악용 방지로 포장한 의무적 신원 수집처럼 읽힌다. 이 글은 그 구분이 왜 중요한지, 그리고 그것이 어디에서 GDPR과 부딪히는지에 관한 것이다.&lt;/p&gt;</description></item><item><title>두 개의 존, 열여덟 시간, 하나의 원인</title><link>https://ercan.cloud/ko/nothing-fails-alone-part-2-two-zones-one-cause/</link><pubDate>Wed, 17 Jun 2026 09:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/nothing-fails-alone-part-2-two-zones-one-cause/</guid><description>&lt;p&gt;&lt;strong&gt;3월 1일, AWS me-central-1 리전의 한 가용 영역 mec1-az2가 AWS의 표현으로 "objects that struck the data center, creating sparks and fire"에 맞았다. 약 18시간 뒤, 두 번째 존 mec1-az3도 전원을 잃었다. 세 번째 mec1-az1은 내내 살아 있었다. 세 개 중 두 개의 존이 손상되자 S3와 DynamoDB가 리전 전체에서 실패하기 시작했고, &lt;a href="https://health.aws.amazon.com/health/status?eventID=arn%3Aaws%3Ahealth%3Ame-central-1%3A%3Aevent%2FMULTIPLE_SERVICES%2FAWS_MULTIPLE_SERVICES_OPERATIONAL_ISSUE%2FAWS_MULTIPLE_SERVICES_OPERATIONAL_ISSUE_5E6B8_EF2498889B5"&gt;Health Dashboard&lt;/a&gt;에 실린 AWS의 고객 권고는 그들 자신의 말로 "enact their disaster recovery plans and recover from remote backups into alternate AWS Regions, ideally in Europe"였다. 가용 영역 독립성은 전원 고장, 냉각 고장, 네트워크 고장을 상대로 설계된다. 3월에 그것은 애초에 설계된 적 없는 원인을 만났고, 그 원인은 그 설계에 아랑곳하지 않았다.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>AWS Organizations를 위한 Multi-party approval</title><link>https://ercan.cloud/ko/aws-organizations-multi-party-approval/</link><pubDate>Sat, 13 Jun 2026 01:00:00 +0300</pubDate><guid>https://ercan.cloud/ko/aws-organizations-multi-party-approval/</guid><description>&lt;p&gt;&lt;strong&gt;Multi-party approval&lt;/strong&gt;은 AWS Organizations의 기능으로, 미리 지정된 고위험 작업 집합을 정족수만큼의 지명된 사람이 별도 경로(out of band)에서 승인할 때까지 차단합니다. 단 하나의 자격 증명은, 그것이 유효한 것이라 하더라도, 더 이상 혼자서 방아쇠를 당길 수 없습니다. 요청자가 작업을 시작하면, 별도의 approval team이 전용 portal에서 이를 검토하고, 팀의 approval threshold가 충족되어야만 작업이 실행됩니다.&lt;/p&gt;
&lt;p&gt;이것은 runbook이나 Slack 메시지가 아니라 API 계층에서 강제되는 "four eyes" 원칙입니다. "두 사람이 서명해야 한다는 정책은 있다"와 "두 사람의 서명 없이는 플랫폼이 물리적으로 진행을 거부한다" 사이의 간극을 메웁니다.&lt;/p&gt;</description></item><item><title>AZ 격리는 버텼다. 당신의 아키텍처는 아니었다.</title><link>https://ercan.cloud/ko/nothing-fails-alone-part-1-az-isolation-held/</link><pubDate>Wed, 03 Jun 2026 09:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/nothing-fails-alone-part-1-az-isolation-held/</guid><description>&lt;p&gt;&lt;strong&gt;5월 7일 저녁, us-east-1의 한 가용 영역, 그 안의 한 데이터 홀에서 냉각이 멈췄다. 랙들이 전원을 잃었고, AWS의 blast radius는 문서가 약속한 그대로 작동했다. 피해는 use1-az4 안에 머물렀다. 다른 모든 존은 계속 서비스했다. 그날 밤 다운된 회사들은 자신들의 아키텍처 안에서 다운됐고, 우리는 이것을 이례적으로 정밀하게 알고 있다. Coinbase가 월요일에 &lt;a href="https://www.coinbase.com/blog/a-postmortem-of-our-may-7-2026-outage"&gt;사후 분석&lt;/a&gt;을 공개하며 자기 입으로 그렇게 말했기 때문이다. 그들의 표현으로, 트레이딩은 플랫폼의 존 경계가 제대로 작동한 사건 중에 "unavailable or degraded for roughly eight hours, with full recovery of all systems taking another twelve" 상태였다.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>지금</title><link>https://ercan.cloud/ko/now/</link><pubDate>Mon, 25 May 2026 10:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/now/</guid><description>&lt;p&gt;&lt;em&gt;(마지막 업데이트: 2026년 5월)&lt;/em&gt;&lt;/p&gt;
&lt;h3 id="글쓰기"&gt;글쓰기&lt;/h3&gt;
&lt;p&gt;클라우드, AWS, 플랫폼 엔지니어링에 관한 필드 노트를 이곳에 게시하고 있습니다. AI 및 응용 ML 관련 &lt;a href="https://ercan.ai"&gt;ercan.ai&lt;/a&gt;와 짧은 형식의 AI 뉴스 &lt;a href="https://news.ercan.ai"&gt;news.ercan.ai&lt;/a&gt;도 운영 중입니다. 월간 AWS 뉴스 다이제스트인 &lt;a href="https://awsmonthly.cloud"&gt;awsmonthly.cloud&lt;/a&gt;를 구축 중입니다 (아직 출시 전).&lt;/p&gt;
&lt;h3 id="컨설팅"&gt;컨설팅&lt;/h3&gt;
&lt;p&gt;소수의 컨설팅 계약을 진행 중입니다. 플랫폼 엔지니어링 자문, AWS 비용 최적화 (Savings Plans 구매가 아닌 진짜 최적화), 대규모 EKS 및 Terraform, 임시 플랫폼 리드, 마이그레이션 및 현대화. 한 번에 한두 건만 진행합니다. 다루는 주제가 겹친다면 &lt;a href="https://linkedin.com/in/ercanermis"&gt;LinkedIn&lt;/a&gt;으로 연락 주세요.&lt;/p&gt;</description></item><item><title>Consulting &amp; Advisory</title><link>https://ercan.cloud/ko/consulting/</link><pubDate>Sun, 24 May 2026 10:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/consulting/</guid><description>&lt;p&gt;Maenyeon jeogeun sueui keonseolting peulojegteureul matgo, jinjeonguro jeulgipe nida. Tim, seutaek, jegageui dayangseongi peulraespeom gamgageul nalgaropge yujihapnida. Keoraeeopmuga yeogiui geureul mandeulgo, geu geuri dasi peulojegteureul mandeupnida.&lt;/p&gt;
&lt;h2 id="seobiseu"&gt;Seobiseu&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Peulraespeom enjinieoring keonseolting.&lt;/strong&gt; &amp;ldquo;Terraformgwa huimang&amp;quot;maneuro deoneun an doeneun jijeome dogaehago iseupnida. Modyul gyeonggye, sangtae soyugwon, CI/CD seolgye, coesogwon IAM, geurigo peulraespeomeul jepumhwaaneun unyeong model.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS bieo ceoekeopae.&lt;/strong&gt; Jinca ceoekeopae. Jul danwi cheongguseo geomsa, teugjeong weokeurodeuro cujeog. Daebubun peulojegteueseo aepeulrikeisyeon kodeureul geondeuljido ango 30-50% cajseupnida. &amp;ldquo;Savings Plan sigugaeyo&amp;quot;boda deo gipsugi.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;EKS mit keonteieo peulraespeom akipaekpae.&lt;/strong&gt; Keulleoseuteo seolgye, nodegroup keugi gyeoljeong, IAM for Service Accounts, silsilro hwagjang ganeung an neteuweokeu, deurama eopsi control plane eopgeureideu jeolyag.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Jojiyoo Terraformgwa Terragrunt.&lt;/strong&gt; Modyul gyeonggye, sangtae soyugwon, deuripeuteu geomsa, geomsa jadonghwa. Bogui bokrireul jibulaneun jiruean inpeura.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Igeon mit hyeondaehwa.&lt;/strong&gt; Regasi AWSro, monoriseseo seobiseuro, dari gyejeong hari. Eoneu bubuni apeugo eotteoke sunseoreul jaya haneunji algo iseul jeongdoro chungbunhi haeboseupnida.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id="je-ireul-haneun-bangsig"&gt;Je ireul haneun bangsig&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Peulojegteu gibaneuro.&lt;/strong&gt; Igeon, peulraespeom jaeseolgye, tto neun bieo munjereul gajigo gyesipnida. Gwigui timgwa hamkke ireul hago gyeolgwareul jeonaripnida.&lt;/p&gt;</description></item><item><title>소개</title><link>https://ercan.cloud/ko/about/</link><pubDate>Sat, 23 May 2026 10:00:00 +0200</pubDate><guid>https://ercan.cloud/ko/about/</guid><description>&lt;img src="https://www.gravatar.com/avatar/fd665aac14709877518d60931c3675d9?s=400&amp;d=mp" alt="Ercan Ermis" width="160" height="160" style="border-radius:50%; margin-bottom:1.5rem;" loading="lazy"&gt;
&lt;p&gt;저는 Ercan Ermis입니다. 네덜란드에 기반을 두고 있는 시니어 클라우드 플랫폼 엔지니어입니다. 클라우드, AWS, EKS, Terraform, 관측 가능성, 그리고 시스템이 새벽 3시에도 살아있는지를 결정하는 플랫폼 엔지니어링 결정에 대해 여기에 글을 씁니다.&lt;/p&gt;
&lt;h3 id="어떻게-여기까지-왔는가"&gt;어떻게 여기까지 왔는가&lt;/h3&gt;
&lt;p&gt;제 인생의 첫 컴퓨터는 1986년 아버지가 사업용으로 구입하신, 5.25인치 플로피 드라이브 두 개(Floppy A와 Floppy B)가 달린 Amstrad였습니다. 진짜 사랑은 1998년 초등학교 4학년 때 시작됐습니다. 학교 컴퓨터실의 Windows 95 머신 중 한 대에 선생님이 Linux를 설치하시며 &amp;ldquo;이게 Linux란다, 자유 소프트웨어야&amp;quot;라고 말씀하셨고, 그 검은 화면에 Pac-Man이 등장한 순간 저는 끝이었습니다.&lt;/p&gt;</description></item><item><title>로컬 DynamoDB가 성장했다: ExtendDB 실습 리뷰</title><link>https://ercan.cloud/ko/local-dynamodb-grew-up-a-hands-on-look-at-extenddb/</link><pubDate>Thu, 21 May 2026 17:42:29 +0300</pubDate><guid>https://ercan.cloud/ko/local-dynamodb-grew-up-a-hands-on-look-at-extenddb/</guid><description>&lt;p&gt;DynamoDB Local은 2013년부터 AWS DynamoDB의 랩탑 대체재였다. Java JAR로, 메모리 내에서 또는 SQLite 파일에 대해 실행되며, 거의 모든 요청 형태를 수락하고, 실제 인증이 없으며, Streams를 꽤 느슨하게 다룬다. 유닛 테스트용으로는 괜찮다. 하지만 코드가 &lt;code&gt;PutItem&lt;/code&gt;과 &lt;code&gt;GetItem&lt;/code&gt; 이상을 수행하는 순간 금이 가기 시작한다.&lt;/p&gt;
&lt;p&gt;ExtendDB v0.1.0이 &lt;a href="https://github.com/extenddb/extenddb" target="_blank" rel="noreferrer noopener"&gt;방금 출시되었다&lt;/a&gt;. Rust로 작성된, DynamoDB 와이어 프로토콜의 클린룸 구현이며, AWS 엔지니어들에 의해, PostgreSQL로 백엔드되고, Apache 2.0 라이선스다. 피치는 "DynamoDB Local, 하지만 진지하게 받아들일 수 있는 것." 이 글은 이것이 유지되는지에 대한 실습 리뷰로, 단일 Mac에서 나란히 실험실로 실행한 결과다.&lt;/p&gt;</description></item><item><title>일요일 자정에 숨겨진 Cloudflare 버그를 찾은 방법 (curl의 즐거움)</title><link>https://ercan.cloud/ko/how-i-found-a-hidden-cloudflare-bug-on-a-sunday-mid-night/</link><pubDate>Sun, 10 May 2026 00:44:28 +0300</pubDate><guid>https://ercan.cloud/ko/how-i-found-a-hidden-cloudflare-bug-on-a-sunday-mid-night/</guid><description>&lt;p&gt;빠른 주말 프로젝트일 줄 알았다. 그런 종류 알지 않는가: "그냥 Egress VM 하나 띄우고, 트래픽 좀 라우팅하고, 커피 한 잔 하면서 점심까지 끝내자." 독자여, 점심까지 끝나지 않았다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;설정&lt;/h2&gt;
&lt;p&gt;일부 개발 환경을 위한 작은 접근 티어를 구축하고 있었다: Cloudflare Zero Trust를 앞에 둔 Egress VM, 두 개의 특정 개발 도메인을 위한 호스트네임 기반 라우팅, 그리고 반대편에서 소스 IP를 확인하는 AWS WAF. "공개 인터넷에 노출하지 않고 팀에게 안전한 접근을 제공하는" 꽤 표준적인 구성이다.&lt;/p&gt;</description></item><item><title>SSH가 양자 컴퓨터에 대해 경고하는 이유와 해결 방법</title><link>https://ercan.cloud/ko/why-your-ssh-is-yelling-about-quantum-computers-and-how-to-fix-it/</link><pubDate>Fri, 17 Apr 2026 13:12:28 +0300</pubDate><guid>https://ercan.cloud/ko/why-your-ssh-is-yelling-about-quantum-computers-and-how-to-fix-it/</guid><description>&lt;p&gt;서버에 SSH로 접속했는데 이런 메시지가 보인다:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;** WARNING: connection is not using a post-quantum key exchange algorithm.
** This session may be vulnerable to "store now, decrypt later" attacks.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;무섭다. 하나씩 분석해보자.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;위협: Store Now, Decrypt Later&lt;/h2&gt;
&lt;p&gt;오늘날의 SSH 암호화는 수학적으로 강력하다. 고전 컴퓨터로 깨는 데 수백만 년이 걸릴 것이다. 하지만 양자 컴퓨터는 다른 규칙으로 작동한다. 충분히 강력한 양자 컴퓨터가 &lt;strong&gt;Shor's Algorithm&lt;/strong&gt;을 실행하면 오늘날 대부분의 공개 키 암호화를 보호하는 수학을 수백만 년이 아닌 몇 시간 만에 깰 수 있다.&lt;/p&gt;</description></item><item><title>IaC-First: 프로덕션에서 AWS 콘솔을 절대 만지지 않는 이유</title><link>https://ercan.cloud/ko/iac-first-why-we-never-touch-the-aws-console-in-production/</link><pubDate>Thu, 16 Apr 2026 19:02:42 +0300</pubDate><guid>https://ercan.cloud/ko/iac-first-why-we-never-touch-the-aws-console-in-production/</guid><description>&lt;p&gt;"프로덕션에서 AWS 콘솔을 절대 만지지 마라"는 극단적인 규칙처럼 들린다. 그렇지 않다. 이는 클라우드 네이티브 팀에서 가장 중요한 운영 원칙이며, 이를 위반하는 대가는 주요 인시던트를 유발할 때까지 조용히 누적된다.&lt;/p&gt;
&lt;p&gt;이 글은 그 이유와 실제 팀에서 IaC-First 개발을 강제하는 방법을 설명한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;State Drift 문제&lt;/h2&gt;
&lt;p&gt;Terraform(및 OpenTofu)은 어떤 인프라가 존재하는지 나타내는 State 파일을 유지한다. Apply 시 Terraform은 State 파일을 구성과 비교하여 현실을 구성에 맞추기 위한 최소한의 변경 집합을 만든다.&lt;/p&gt;
&lt;p&gt;AWS 콘솔에서 클릭하며 리소스를 생성하거나 수정하면, State 파일을 변경하지 않고 현실을 변경하는 것이다. 콘솔은 진실의 원천(Single Source of Truth)이 아니다. IaC가 그 역할이다. 콘솔은 거짓말이다.&lt;/p&gt;</description></item><item><title>Google Pixel 9 XL Pro를 6층 발코니에서 거리로 떨어뜨렸다</title><link>https://ercan.cloud/ko/i-dropped-my-google-pixel-9-xl-pro-from-6th-floor-balcony-to-the-street/</link><pubDate>Sun, 01 Feb 2026 02:14:25 +0300</pubDate><guid>https://ercan.cloud/ko/i-dropped-my-google-pixel-9-xl-pro-from-6th-floor-balcony-to-the-street/</guid><description>&lt;h2 class="wp-block-heading"&gt;중력 1 - Google Pixel 9 Pro XL 0&lt;/h2&gt;
&lt;p&gt;오늘 밤 친구 집에 갔다. 멋진 대화, 좋은 웃음, 물리학에 대한 인식 제로. 집에 도착했을 때는 &lt;strong&gt;오전 2시&lt;/strong&gt;, 자신감은 높고 악력은 낮은 그 위험한 시간대였다.&lt;/p&gt;
&lt;p&gt;평소처럼 자기 전에 신선한 공기를 마시기 위해 &lt;strong&gt;사랑스러운 발코니&lt;/strong&gt;로 나갔다. 손에는 폰을 든 채.&lt;br&gt;먼저 &lt;strong&gt;메시지에 답장&lt;/strong&gt;을 하고 있었다. 평범한 일상. 매우 안전하고, 매우 통제된 상황.&lt;/p&gt;
&lt;p&gt;그러다 고개를 들었다. &lt;strong&gt;달이 환상적이었다.&lt;/strong&gt; &lt;em&gt;그래, 이건 사진 찍을 가치가 있겠다&lt;/em&gt; 싶은 그런 밤이었다.&lt;/p&gt;</description></item><item><title>AWS S3 신규 기능: 데이터 이동 없는 재암호화</title><link>https://ercan.cloud/ko/aws-s3-new-feature-re-encryption-without-movement/</link><pubDate>Fri, 30 Jan 2026 11:51:05 +0300</pubDate><guid>https://ercan.cloud/ko/aws-s3-new-feature-re-encryption-without-movement/</guid><description>&lt;p&gt;&lt;code&gt;UpdateObjectEncryption&lt;/code&gt; API의 최근 출시는 대규모 데이터 보안 관리 방식에 중대한 변화를 가져왔다. 기존에는 S3 객체의 암호화를 변경하는 것이 "물리적" 작업이었다. 비트를 이동해야 했다. 이제는 "논리적" 메타데이터 작업이다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;기술적 심층 분석: 데이터 이동 없는 재암호화&lt;/h2&gt;
&lt;p&gt;이 업데이트의 "마법"은 &lt;strong&gt;Envelope Encryption&lt;/strong&gt;에 있다. 기존 &lt;code&gt;CopyObject&lt;/code&gt; 워크플로우에서는 S3가 기존 키로 실제 데이터를 복호화하고 새 키로 재암호화해야 했으며, 이는 사실상 새 파일을 생성하는 것이었다.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;UpdateObjectEncryption&lt;/code&gt; API를 사용하면 S3는 기본 데이터 블록을 전혀 건드리지 않는다. 대신 &lt;strong&gt;Data Key (DK)&lt;/strong&gt;와만 상호작용한다.&lt;/p&gt;</description></item><item><title>소음 없이 Donald Trump를 추적하기 위해 TrumpDaily를 만들었다</title><link>https://ercan.cloud/ko/https-trumpdaily-site-i-built-a-news-aggregator-so-i-can-finally-keep-up/</link><pubDate>Thu, 22 Jan 2026 23:11:48 +0300</pubDate><guid>https://ercan.cloud/ko/https-trumpdaily-site-i-built-a-news-aggregator-so-i-can-finally-keep-up/</guid><description>&lt;p&gt;솔직히 트럼프를 추적하는 것은 지치는 일이다. 이 사람은 BBC, Guardian, NPR, Al Jazeera, 심지어 Babylon Bee까지 헤드라인을 장악한다. 매일 10개 이상의 사이트를 확인한다고? 사양한다. 그래서 &lt;strong&gt;Trump Daily&lt;/strong&gt;를 만들었다! 모든 것을 하나의 깔끔한 인터페이스에 담는 자체 호스팅 RSS 수집기다. &lt;a href="https://trumpdaily.site?utm_source=blog&amp;amp;utm_medium=blog&amp;amp;utm_campaign=blog&amp;amp;utm_id=blog"&gt;https://trumpdaily.site&lt;/a&gt;가 탄생했다!&lt;/p&gt;
&lt;p&gt;솔직히 말하면, 몇 년 전 기준으로 이게 몇 달 만에 가장 즐거웠던 코딩이었다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;스택 (또는: 왜 지루한 기술을 선택했는가)&lt;/h2&gt;
&lt;ul class="wp-block-list"&gt;&lt;li&gt;&lt;strong&gt;백엔드:&lt;/strong&gt; Python/Flask (그래, 사랑한다!)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;데이터베이스:&lt;/strong&gt; PostgreSQL&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;캐시:&lt;/strong&gt; Redis (말 그대로 모든 것에)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;태스크:&lt;/strong&gt; Celery (백그라운드 RSS 가져오기)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;프론트엔드:&lt;/strong&gt; Vanilla JS (React 아님, 덤벼라)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;배포:&lt;/strong&gt; Docker Compose (한 명령으로 끝)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;전체가 약 1,000줄의 Python과 400줄의 JS로 이루어져 있다. 로컬에서 실행된다. 추적 없음(Google Analytics만). 클라우드 요금 없음. 불필요한 것 없음.&lt;/p&gt;</description></item><item><title>Spotify의 Instagram 공유 기능이 무료 광고판으로 변한 사건</title><link>https://ercan.cloud/ko/when-spotifys-share-to-instagram-flow-turns-into-a-free-billboard/</link><pubDate>Tue, 09 Dec 2025 01:11:36 +0300</pubDate><guid>https://ercan.cloud/ko/when-spotifys-share-to-instagram-flow-turns-into-a-free-billboard/</guid><description>&lt;p&gt;이번 주 초, Instagram Stories에 노래를 공유하려고 했다. "&lt;em&gt;&lt;a href="https://open.spotify.com/track/4wQhrNnIwpdUGfn0Cx7FE4?si=2adb5d71bb3c4190"&gt;Fusun Onal - Ah Nerede&lt;/a&gt;&lt;/em&gt;", 2004년 발매곡.&lt;/p&gt;
&lt;p&gt;Spotify -&gt; Share -&gt; Instagram. 누구나 수천 번 하는 일이다.&lt;/p&gt;
&lt;p&gt;하지만 앨범 커버 대신 Instagram은 &lt;strong&gt;완전히 무관한 사람의 Instagram 프로필 스크린샷&lt;/strong&gt;을 열었다. 내 것도 아니고, Spotify의 것도 아닌. 본질적으로 무료 광고였다.&lt;/p&gt;
&lt;p&gt;그리고 단순한 글리치처럼 보이지 않았다. 주입된 것처럼 보였다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;어떻게 이런 일이 가능했을까?&lt;/h2&gt;
&lt;h3 class="wp-block-heading"&gt;1. 조작된 미디어 엔드포인트를 통한 공유 자산 주입&lt;/h3&gt;
&lt;p&gt;Spotify는 화면을 스크린샷하지 않고 서버 측에서 &lt;strong&gt;동적 이미지&lt;/strong&gt;를 생성한다. 누군가 이미지 URL이나 해당 트랙과 연관된 CDN 자산을 재정의할 수 있다면 모든 공유 시도에 자신의 이미지를 푸시할 수 있다.&lt;/p&gt;</description></item><item><title>AWS Monthly (2025년 11월): 스테이트풀 서버리스 혁명</title><link>https://ercan.cloud/ko/aws-monthly-nov-25-the-stateful-serverless-revolution/</link><pubDate>Sun, 30 Nov 2025 20:21:43 +0300</pubDate><guid>https://ercan.cloud/ko/aws-monthly-nov-25-the-stateful-serverless-revolution/</guid><description>&lt;p&gt;11월과 re:Invent 2025는 서버리스의 "성배"인 &lt;strong&gt;AWS Lambda Durable Functions&lt;/strong&gt;를 가져왔다.&lt;/p&gt;
&lt;p&gt;이 기능은 "Stateful Serverless"를 Lambda 런타임에 직접 도입한다. 새로운 &lt;code&gt;withDurableExecution&lt;/code&gt; 래퍼를 사용하여 최대 &lt;strong&gt;1년&lt;/strong&gt; 동안 지속되는 장기 실행 워크플로우를 작성할 수 있다. 함수가 &lt;code&gt;context.wait()&lt;/code&gt; 호출에 도달하면 컴퓨트가 일시 중단되고, 이벤트나 사람의 승인이 재개할 때까지 비용 지불이 중단된다.&lt;/p&gt;
&lt;p&gt;이는 많은 복잡한 &lt;strong&gt;Step Functions&lt;/strong&gt; 사용 사례를 순수하고 테스트 가능한 코드로 효과적으로 대체한다. 또한 Graviton4보다 25% 빠르고 &lt;strong&gt;Nitro Isolation Engine&lt;/strong&gt;을 탑재한 &lt;strong&gt;Graviton5&lt;/strong&gt;도 출시되었다. 이 엔진은 형식 검증을 사용하여 워크로드 격리의 수학적 증명을 제공한다.&lt;/p&gt;</description></item><item><title>클라우드가 재채기하면 세상이 감기에 걸린다 - us-east-1 대란의 교훈</title><link>https://ercan.cloud/ko/when-the-cloud-sneezes-the-world-catches-a-cold-lessons-from-the-us-east-1-meltdown/</link><pubDate>Mon, 20 Oct 2025 10:05:41 +0300</pubDate><guid>https://ercan.cloud/ko/when-the-cloud-sneezes-the-world-catches-a-cold-lessons-from-the-us-east-1-meltdown/</guid><description>&lt;p&gt;오늘 다시 한번, &lt;strong&gt;인터넷의 절반이 어두워졌다&lt;/strong&gt;. 글로벌 정전이나 사이버 공격 때문이 아니라, 단일 AWS 리전인 &lt;strong&gt;us-east-1 (N. Virginia)&lt;/strong&gt;이 나쁜 하루를 보냈기 때문이다.&lt;/p&gt;
&lt;p&gt;Perplexity가 다운되었다. Amazon 자체도 비틀거렸다. Substack, Signal, Fortnite, 그리고 수많은 다른 서비스들이 사라졌다. 심지어 기업들이 고객에게 "우리가 다운되었습니다!"라고 알리는 데 사용하는 Statuspage.io조차도 자체 상태 페이지를 업데이트할 수 없었다. 그들 역시 동일한 고장난 백본에 의존하고 있기 때문이다. 아이러니의 정의다.&lt;/p&gt;
&lt;p&gt;그리고 이것은 &lt;strong&gt;단일 장애 지점 세상&lt;/strong&gt;의 정의이기도 하다.&lt;/p&gt;
&lt;hr class="wp-block-separator has-alpha-channel-opacity"/&gt;
&lt;h3 class="wp-block-heading"&gt;"글로벌" 클라우드의 환상&lt;/h3&gt;
&lt;p&gt;우리는 인터넷이 분산되어 있고, 어디에나 있고, 복원력 있으며, 멈출 수 없다고 생각하기 좋아한다. 하지만 &lt;strong&gt;버지니아의 데이터 센터가 재채기하면&lt;/strong&gt;, 유럽, 아시아, 아프리카가 폐렴에 걸린다. 현실에서 "글로벌" 웹은 &lt;strong&gt;소수의 미국 클라우드 리전&lt;/strong&gt;, 특히 인터넷 백본 서비스의 대부분을 조용히 구동하는 &lt;strong&gt;AWS us-east-1&lt;/strong&gt;을 통해 실행되기 때문이다.&lt;/p&gt;</description></item><item><title>AWS Monthly (2025년 9월): Vega OS와 eBPF 옵저버빌리티</title><link>https://ercan.cloud/ko/aws-monthly-sep-25-vega-os-ebpf-observability/</link><pubDate>Tue, 30 Sep 2025 20:16:41 +0300</pubDate><guid>https://ercan.cloud/ko/aws-monthly-sep-25-vega-os-ebpf-observability/</guid><description>&lt;p&gt;뜻밖의 움직임으로 AWS는 9월에 &lt;strong&gt;Vega OS&lt;/strong&gt;를 출시했다. Vega는 엣지와 고성능 UI 렌더링(React Native 코어 포함)에 최적화된 Linux 기반 특수 OS다. 초경량이며 밀리초 단위로 부팅되도록 설계되어 차세대 스마트 기기에 완벽하다.&lt;/p&gt;
&lt;p&gt;옵저버빌리티 측면에서는 &lt;strong&gt;eBPF(Extended Berkeley Packet Filter)&lt;/strong&gt;를 사용하여 자동 검색을 수행하는 &lt;strong&gt;CloudWatch Application Map 2.0&lt;/strong&gt;이 출시되었다. 이를 통해 AWS는 계측되지 않은 레거시 서비스와 서드파티 API 호출을 포함한 전체 서비스 토폴로지를, 단 한 줄의 계측 코드도 작성하지 않고 매핑할 수 있다.&lt;/p&gt;
&lt;p&gt;문서가 현실을 따라잡지 못한 "스파게티" 아키텍처를 가지고 있다면, 이 도구는 환경의 모든 패킷 흐름에 대해 수학적으로 정확한 맵을 제공한다. 9월은 마침내 "Shadow IT"에 대한 완전한 투명성을 얻은 달이었다.&lt;/p&gt;</description></item><item><title>AWS Monthly (2025년 8월): 빅데이터, 제로 에포트</title><link>https://ercan.cloud/ko/aws-monthly-aug-25-big-data-zero-effort/</link><pubDate>Sun, 31 Aug 2025 20:14:51 +0300</pubDate><guid>https://ercan.cloud/ko/aws-monthly-aug-25-big-data-zero-effort/</guid><description>&lt;p&gt;8월은 "Data Gravity"에 관한 달이었다. &lt;strong&gt;Amazon Aurora&lt;/strong&gt; 스토리지 한도가 &lt;strong&gt;256 TiB&lt;/strong&gt;로 증가하여, 99.9%의 기업에게 "샤딩" 논의는 사실상 끝났다.&lt;/p&gt;
&lt;p&gt;그러나 진정한 주인공은 &lt;strong&gt;Zero-ETL 통합&lt;/strong&gt;의 확장이었다. AWS는 &lt;strong&gt;Aurora에서 OpenSearch&lt;/strong&gt;로, &lt;strong&gt;RDS에서 Redshift&lt;/strong&gt;로의 원활하고 거의 실시간에 가까운 복제를 가능하게 했다. 데이터베이스의 내부 트랜잭션 로그를 활용하여 AWS는 소스 데이터베이스의 컴퓨트에 영향을 주지 않고 분석 엔진으로 데이터를 복제한다.&lt;/p&gt;
&lt;p&gt;데이터 엔지니어에게 이는 간단한 동기화 작업을 위한 취약한 Python/Glue ETL 파이프라인의 종말을 의미한다. 또한 &lt;strong&gt;DynamoDB&lt;/strong&gt;에 "Attribute-Based Access Control"(ABAC)이 도입되어, 복잡한 IAM 정책 대신 태그를 통해 권한을 관리할 수 있게 되었다.&lt;/p&gt;</description></item><item><title>AWS Monthly (2025년 7월): 상식의 경계에서의 Kubernetes</title><link>https://ercan.cloud/ko/aws-monthly-july-25-kubernetes-at-the-edge-of-sanity/</link><pubDate>Thu, 31 Jul 2025 20:13:00 +0300</pubDate><guid>https://ercan.cloud/ko/aws-monthly-july-25-kubernetes-at-the-edge-of-sanity/</guid><description>&lt;p&gt;7월은 EKS(Elastic Kubernetes Service) 진영에게 획기적인 달이었다. AWS는 &lt;strong&gt;EKS가 이제 100,000 노드 클러스터를 지원&lt;/strong&gt;한다고 발표했다.&lt;/p&gt;
&lt;p&gt;10만 노드가 대부분의 우리에게 과할 수 있지만, Kubernetes 컨트롤 플레인을 그 규모에서 안정적으로 만들기 위해 필요한 기술적 최적화는 모두에게 혜택을 준다. 스케줄러는 더 빨라졌고, ETCD 성능은 더 탄력적이다.&lt;/p&gt;
&lt;p&gt;하지만 진정한 게임 체인저는 &lt;strong&gt;EKS Auto Mode&lt;/strong&gt;였다. 이는 Kubernetes의 "No-Ops" 진화다. Node Group이나 Karpenter를 관리할 필요를 없앤다. AWS가 워커 플레인을 완전히 관리하며, 파드 요구사항에 기반해 실시간으로 최적의 인스턴스 타입을 선택한다.&lt;/p&gt;</description></item><item><title>AWS Monthly (2025년 5월): War Room의 죽음</title><link>https://ercan.cloud/ko/aws-monthly-may-25-the-death-of-the-war-room/</link><pubDate>Sat, 31 May 2025 20:00:00 +0300</pubDate><guid>https://ercan.cloud/ko/aws-monthly-may-25-the-death-of-the-war-room/</guid><description>&lt;p&gt;5월은 &lt;strong&gt;CloudWatch Investigations&lt;/strong&gt;를 가져왔고, 이는 온콜 로테이션을 근본적으로 바꾸어 놓았다. 수동 로그 상관 분석 대신, 이 서비스는 AI를 사용하여 &lt;strong&gt;자동화된 근본 원인 분석(RCA)&lt;/strong&gt;을 수행한다.&lt;/p&gt;
&lt;p&gt;알람이 트리거되면 Investigations는 자동으로 오류를 추적한다. 특정 Git 커밋, Terraform apply, RDS 파라미터 변경과 같은 동시 발생 이벤트와 메트릭 스파이크를 상관 분석한다. "500 Errors"를 보여주는 대시보드 대신, &lt;em&gt;"서비스 A의 레이턴시 스파이크는 서비스 B의 설정 변경으로 인해 발생했으며, 이로 인해 RDS에서 연결 누수가 트리거되었다"&lt;/em&gt;와 같은 리포트를 받는다.&lt;/p&gt;</description></item><item><title>Python과 Boto3로 AWS CloudWatch Log Group 태깅 자동화하기</title><link>https://ercan.cloud/ko/automating-aws-cloudwatch-log-group-tagging-with-python-and-boto3/</link><pubDate>Wed, 16 Apr 2025 08:01:03 +0300</pubDate><guid>https://ercan.cloud/ko/automating-aws-cloudwatch-log-group-tagging-with-python-and-boto3/</guid><description>&lt;p&gt;AWS CloudWatch 로그 그룹의 태그 관리는 운영 가시성, 비용 관리, 효과적인 리소스 구성에 매우 중요하다. 로그 그룹을 수동으로 태깅하는 것은 특히 많은 수의 로그 그룹을 다룰 때 번거로울 수 있다. 이 글에서는 Python과 AWS SDK for Python(Boto3)을 사용하여 이 작업을 자동화하는 간단한 방법을 설명한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;CloudWatch 로그 그룹 태깅 자동화의 중요성&lt;/h2&gt;
&lt;p&gt;자동화가 보장하는 것:&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;&lt;li&gt;AWS 리소스 전반의 일관된 태깅.&lt;/li&gt;
&lt;li&gt;수동 작업과 인적 오류 감소.&lt;/li&gt;
&lt;li&gt;비용 및 사용량을 정확하게 추적할 수 있는 능력 향상.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="wp-block-heading"&gt;사전 요구사항&lt;/h2&gt;
&lt;ul class="wp-block-list"&gt;&lt;li&gt;Python 3 설치&lt;/li&gt;
&lt;li&gt;적절한 권한으로 AWS CLI 구성&lt;/li&gt;
&lt;li&gt;Boto3 (&lt;code&gt;pip install boto3&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;IAM 권한:&lt;ul class="wp-block-list"&gt;&lt;li&gt;&lt;code&gt;logs:DescribeLogGroups&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs:ListTagsLogGroup&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;logs:TagLogGroup&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="wp-block-heading"&gt;CloudWatch 로그 그룹 태깅을 위한 Python 스크립트&lt;/h2&gt;
&lt;p&gt;아래는 현재 태그가 없는 AWS CloudWatch 로그 그룹에 특정 태그를 자동으로 적용하는 Python 스크립트다.&lt;/p&gt;</description></item><item><title>Python과 Boto3로 AWS ECR 태깅 자동화하기</title><link>https://ercan.cloud/ko/automating-aws-ecr-tagging-with-python-and-boto3/</link><pubDate>Tue, 15 Apr 2025 09:03:02 +0300</pubDate><guid>https://ercan.cloud/ko/automating-aws-ecr-tagging-with-python-and-boto3/</guid><description>&lt;p&gt;AWS 리소스의 적절한 태깅은 효율적인 리소스 관리, 비용 할당, 감사에 매우 중요하다. 수많은 AWS Elastic Container Registry(ECR) 리포지토리가 있다면 수동 태깅은 지루하고 오류가 발생하기 쉽다. 이 글에서는 Python과 AWS SDK for Python(Boto3)을 사용하여 ECR 리포지토리의 태깅을 자동화하는 간단하고 효과적인 솔루션을 제공한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;태깅을 자동화해야 하는 이유&lt;/h2&gt;
&lt;p&gt;태깅 자동화는 시간을 절약하고 일관성을 보장하며 비용이 많이 드는 실수를 방지한다. 태그는 특정 프로젝트, 환경, 또는 비용 센터와 관련된 리소스를 추적하는 데 도움이 된다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;사전 요구사항&lt;/h2&gt;
&lt;ul class="wp-block-list"&gt;&lt;li&gt;Python 3 설치&lt;/li&gt;
&lt;li&gt;AWS CLI 설치 및 구성&lt;/li&gt;
&lt;li&gt;Boto3 라이브러리 설치 (&lt;code&gt;pip install boto3&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;IAM 권한:&lt;ul class="wp-block-list"&gt;&lt;li&gt;&lt;code&gt;ecr:DescribeRepositories&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ecr:ListTagsForResource&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ecr:TagResource&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="wp-block-heading"&gt;Python으로 AWS ECR 리포지토리 태깅하기&lt;/h2&gt;
&lt;p&gt;다음은 Boto3를 사용하여 현재 태그가 없는 모든 ECR 리포지토리에 미리 정의된 태그를 추가하는 간단한 Python 스크립트다.&lt;/p&gt;</description></item><item><title>Bash로 ECR 이미지 정리 자동화하기</title><link>https://ercan.cloud/ko/automating-ecr-image-cleanup-with-bash/</link><pubDate>Fri, 11 Apr 2025 12:40:42 +0300</pubDate><guid>https://ercan.cloud/ko/automating-ecr-image-cleanup-with-bash/</guid><description>&lt;p&gt;Amazon ECR(Elastic Container Registry)의 컨테이너 이미지 관리는 레지스트리를 깨끗하고 비용 효율적으로 유지하는 데 매우 중요하다. 시간이 지남에 따라 사용되지 않거나 더 이상 사용되지 않는 이미지가 누적되어 스토리지 비용 증가와 운영 오버헤드로 이어질 수 있다. 일반적인 시나리오 중 하나는 특정 태깅 패턴을 따르는 이미지를 제거하는 것이다. 이 경우 &lt;strong&gt;x&lt;/strong&gt;가 하나 이상의 숫자를 나타내는 "9.x.x" 형식의 버전이 태그된 모든 이미지가 대상이다.&lt;/p&gt;
&lt;p&gt;이 글에서는 ECR 이미지 정리를 자동화하도록 설계된 Bash 스크립트를 소개한다. 이 스크립트는 &lt;strong&gt;dry-run&lt;/strong&gt;과 &lt;strong&gt;apply&lt;/strong&gt; 두 가지 주요 모드를 제공하여 필요에 따라 삭제를 시뮬레이션하거나 실행할 수 있다.&lt;/p&gt;</description></item><item><title>Bash 스크립트로 ECR 리포지토리 업데이트하기</title><link>https://ercan.cloud/ko/update-ecr-repositories-with-bash-script/</link><pubDate>Tue, 08 Apr 2025 10:05:29 +0300</pubDate><guid>https://ercan.cloud/ko/update-ecr-repositories-with-bash-script/</guid><description>&lt;p&gt;아래는 AWS CLI를 사용하여 모든 Amazon ECR 리포지토리를 조회한 후 각 리포지토리의 이미지 태그 변경 가능성(Image Tag Mutability)을 &lt;strong&gt;MUTABLE&lt;/strong&gt;로 설정하는 예제 Bash 스크립트다.&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;#!/bin/bash
# 이 스크립트는 모든 Amazon ECR 리포지토리를 가져와 이미지 태그 변경 가능성을 MUTABLE로 설정한다.
&lt;p&gt;repositories=$(aws ecr describe-repositories &amp;ndash;query &amp;ldquo;repositories[].repositoryName&amp;rdquo; &amp;ndash;output text)&lt;/p&gt;
&lt;p&gt;if [ -z &amp;ldquo;$repositories&amp;rdquo; ]; then
echo &amp;ldquo;ECR 리포지토리를 찾을 수 없습니다.&amp;rdquo;
exit 1
fi&lt;/p&gt;
&lt;p&gt;for repo in $repositories; do
echo &amp;ldquo;리포지토리 $repo의 이미지 태그 변경 가능성을 MUTABLE로 설정 중&amp;rdquo;
aws ecr put-image-tag-mutability &amp;ndash;repository-name &amp;ldquo;$repo&amp;rdquo; &amp;ndash;image-tag-mutability MUTABLE | tee&lt;/p&gt;</description></item><item><title>CI/CD 파이프라인과 개발 흐름에서 자동화된 테스트가 필수적인 이유</title><link>https://ercan.cloud/ko/why-automated-tests-are-essential-in-your-ci-cd-pipeline-and-development-flow/</link><pubDate>Sun, 06 Apr 2025 06:44:11 +0300</pubDate><guid>https://ercan.cloud/ko/why-automated-tests-are-essential-in-your-ci-cd-pipeline-and-development-flow/</guid><description>&lt;p&gt;모두가 겪어본 시나리오를 이야기해보자: 반짝이는 새 기능을 막 마무리하고, 머지하려고 신이 나 있는데, 쾅, 프로덕션에서 로컬 환경에서는 잡지 못한 무언가가 깨진다. 이것이 바로 피하고 싶은 공포 이야기다. 바로 여기서 자동화된 테스트가 등장하며, 특히 CI/CD(Continuous Integration and Continuous Delivery) 파이프라인 내에서 그 역할이 중요하다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;1. 버그 조기 발견&lt;/h2&gt;
&lt;p&gt;파이프라인에 테스트를 두는 것의 가장 큰 장점 중 하나는 이슈를 조기에, 종종 프로덕션에 도달하기도 전에 잡아낸다는 것이다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;2. 배포에 대한 확신&lt;/h2&gt;
&lt;p&gt;견고한 자동화된 테스트 스위트를 갖추면 훨씬 더 큰 확신을 가지고 배포할 수 있다.&lt;/p&gt;</description></item><item><title>AWS Monthly (2025년 4월): AI 열기 식히기</title><link>https://ercan.cloud/ko/aws-monthly-april-25-cooling-the-ai-heat/</link><pubDate>Mon, 31 Mar 2025 19:59:00 +0300</pubDate><guid>https://ercan.cloud/ko/aws-monthly-april-25-cooling-the-ai-heat/</guid><description>&lt;p&gt;4월, AWS는 데이터 센터 엔지니어링의 비하인드를 살짝 공개했다. 최신 AI 클러스터의 열 출력을 처리하기 위해 &lt;strong&gt;Direct-to-Chip Liquid Cooling&lt;/strong&gt;을 공개한 것이다.&lt;/p&gt;
&lt;p&gt;이는 단순한 하드웨어 호기심 그 이상이다. 성능 관점에서 액체 냉각은 랙당 &lt;strong&gt;3배 더 높은 컴퓨팅 밀도&lt;/strong&gt;를 가능하게 한다. Trainium과 Inferentia 같은 커스텀 실리콘이 공기 냉각 환경에서 자주 발생하는 열 스로틀링 없이 장시간 실행되는 학습 작업에서 최고 클럭 속도를 유지할 수 있도록 보장한다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;EC2 UltraClusters 2.0&lt;/strong&gt;의 출시도 있었다. 이는 Elastic Fabric Adapter(EFA)를 통해 &lt;strong&gt;논블로킹 페타비트급 네트워킹&lt;/strong&gt;을 지원한다. 수조 개의 파라미터를 가진 모델을 분산 학습하는 경우, 노드 간 통신 병목 현상이 사실상 제거되었다.&lt;/p&gt;</description></item><item><title>AWS Monthly (2025년 3월): 근접성 파워 플레이</title><link>https://ercan.cloud/ko/aws-monthly-mar-25-the-proximity-power-play/</link><pubDate>Mon, 31 Mar 2025 19:51:00 +0300</pubDate><guid>https://ercan.cloud/ko/aws-monthly-mar-25-the-proximity-power-play/</guid><description>&lt;p&gt;3월은 클라우드의 물리적 기반에 관한 달이었다. AWS는 &lt;strong&gt;1,000억 달러 규모의 글로벌 투자&lt;/strong&gt;를 발표했고, 우리에게는 &lt;strong&gt;20개 이상의 새로운 Local Zone&lt;/strong&gt;이 가동되는 것으로 이어졌다.&lt;/p&gt;
&lt;p&gt;기술적으로 이는 거의 모든 주요 기술 허브에 "한 자릿수 밀리초 레이턴시"를 제공한다. AR/VR 백엔드, 산업용 IoT, 또는 서브 밀리초 원격 측정 시스템을 구축 중이라면 "실리콘까지의 거리"가 더 짧아졌다. "중앙 리전"에서 더 분산된 "Edge-First" 아키텍처로의 이동이 나타나고 있다.&lt;/p&gt;
&lt;p&gt;네트워킹 측면에서 &lt;strong&gt;VPC Lattice&lt;/strong&gt;는 중요한 업데이트인 &lt;strong&gt;Cross Account Trust Labels&lt;/strong&gt;를 받았다. 이는 취약한 IP 범위나 복잡한 피어링 대신 논리적 메타데이터에 기반해 서비스 간 통신 정책을 정의할 수 있게 해준다. 멀티 계정 거버넌스에 있어 거대한 승리다.&lt;/p&gt;</description></item><item><title>이 강력한 Bash 스크립트로 AWS ECR 관리를 간소화하기</title><link>https://ercan.cloud/ko/streamline-your-aws-ecr-management-with-this-powerful-bash-script/</link><pubDate>Thu, 27 Mar 2025 06:32:10 +0300</pubDate><guid>https://ercan.cloud/ko/streamline-your-aws-ecr-management-with-this-powerful-bash-script/</guid><description>&lt;p&gt;AWS ECR(Elastic Container Registry)에서 컨테이너 리포지토리를 관리하는 것은 특히 인프라가 성장함에 따라 빠르게 부담스러운 작업이 될 수 있다. 이 글에서는 ECR 리포지토리에 Lifecycle Policy 적용을 자동화하도록 설계된 편리한 Bash 스크립트를 심층적으로 살펴본다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;이 스크립트가 하는 일&lt;/h2&gt;
&lt;p&gt;이 Bash 스크립트의 주요 목적은 지정된 리전의 각 AWS ECR 리포지토리에 최신 3개의 이미지만 유지하는 Lifecycle Policy를 적용하는 프로세스를 자동화하는 것이다:&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;&lt;li&gt;&lt;strong&gt;오류 처리:&lt;/strong&gt; 어떤 명령이 0이 아닌 상태를 반환하면 즉시 종료.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;컬러 코드 출력:&lt;/strong&gt; ANSI 컬러 코드 사용.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Dry-Run 모드:&lt;/strong&gt; &lt;code&gt;--dry-run&lt;/code&gt; 옵션으로 실제 정책을 적용하지 않고 시뮬레이션.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AWS CLI 통합:&lt;/strong&gt; AWS CLI를 사용하여 리포지토리 이름을 조회한 후 각 리포지토리를 순회.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="wp-block-heading"&gt;Lifecycle Policy 정의&lt;/h3&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;lifecycle_policy='{
 "rules": &amp;#91;
 {
 "rulePriority": 1,
 "description": "Keep last 3 images",
 "selection": {
 "tagStatus": "any",
 "countType": "imageCountMoreThan",
 "countNumber": 3
 },
 "action": { "type": "expire" }
 }
 ]
}'&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="wp-block-heading"&gt;결론&lt;/h2&gt;
&lt;p&gt;일상적인 작업을 자동화하는 것은 효율적인 DevOps 및 시스템 관리를 위한 핵심 전략이다. 이 Bash 스크립트는 간단한 자동화가 어떻게 중요한 운영상의 이점을 가져올 수 있는지 보여주는 훌륭한 예시다.&lt;/p&gt;</description></item><item><title>AWS Monthly (2025년 1월): 6MB 한계 돌파</title><link>https://ercan.cloud/ko/aws-monthly-jan-25-shattering-the-6mb-ceiling/</link><pubDate>Fri, 31 Jan 2025 08:36:00 +0300</pubDate><guid>https://ercan.cloud/ko/aws-monthly-jan-25-shattering-the-6mb-ceiling/</guid><description>&lt;p&gt;2025년은 서버리스 커뮤니티에서 가장 오래된 "병목" 불만 중 하나를 해결하며 시작되었다. 수년간 동기 Lambda 호출의 6MB 페이로드 한계는 데이터가 조금만 많아져도 S3 Pre-signed URL이나 비동기 패턴을 사용해야 하는 복잡한 우회 방법을 강제했다.&lt;/p&gt;
&lt;p&gt;1월, AWS는 공식적으로 &lt;strong&gt;Lambda 응답 스트리밍 용량을 200 MB로 상향&lt;/strong&gt;했다. 기술적으로 이는 데이터 이그레스를 처리하는 방식의 거대한 변화다. &lt;code&gt;response-stream&lt;/code&gt; 콘텐츠 타입을 구현함으로써 함수는 이제 대용량 페이로드, 고해상도 미디어, 거대한 JSON 블롭, 실시간 AI 트랜스크립션을 클라이언트에 직접 푸시할 수 있다. 클라이언트가 200MB 버퍼 전체가 닫힐 때까지 기다리는 대신 데이터가 생성되는 즉시 수신을 시작하므로 &lt;strong&gt;Time to First Byte (TTFB)&lt;/strong&gt;가 크게 감소한다.&lt;/p&gt;</description></item><item><title>Terraform과 AWS Route 53을 사용하여 Google Workspace(Gmail)용 DKIM 설정하기</title><link>https://ercan.cloud/ko/setting-up-dkim-for-google-workspace-gmail-using-terraform-and-aws-route-53/</link><pubDate>Wed, 02 Oct 2024 05:54:17 +0300</pubDate><guid>https://ercan.cloud/ko/setting-up-dkim-for-google-workspace-gmail-using-terraform-and-aws-route-53/</guid><description>&lt;p&gt;DKIM(DomainKeys Identified Mail)은 이메일 스푸핑을 방지하는 데 도움이 되는 중요한 이메일 인증 기술이다. DKIM을 사용하면 비공개 키로 이메일 헤더에 디지털 서명하고, 수신자는 도메인의 DNS 레코드에 저장된 공개 키를 사용하여 이 서명을 확인한다.&lt;/p&gt;
&lt;p&gt;이 글에서는 Terraform을 사용하여 Google Workspace용 DKIM을 구성하고 AWS Route 53을 DNS 관리에 사용하는 방법을 살펴본다.&lt;/p&gt;
&lt;h3 class="wp-block-heading"&gt;Terraform 블록 분석&lt;/h3&gt;
&lt;h4 class="wp-block-heading"&gt;DKIM 레코드용 로컬 변수&lt;/h4&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;locals {
 dkim_record = "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA..."
}&lt;/code&gt;&lt;/pre&gt;
&lt;ul class="wp-block-list"&gt;&lt;li&gt;&lt;strong&gt;v=DKIM1&lt;/strong&gt;: 사용 중인 DKIM 버전 지정.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;k=rsa&lt;/strong&gt;: 사용된 암호화 유형.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;p=MIIBIjAN...&lt;/strong&gt;: 공개 키 자체.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 class="wp-block-heading"&gt;Route 53에 DKIM 레코드 생성&lt;/h4&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;resource "aws_route53_record" "google_domainkey_TXT" {
 zone_id = aws_route53_zone.domain_com.zone_id
 name = "google._domainkey"
 type = "TXT"
 ttl = 300
 records = &amp;#91;
 replace(local.dkim_record, "/(.{255})/", "$1\"\"")
 ]
}&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class="wp-block-heading"&gt;결론&lt;/h3&gt;
&lt;p&gt;Terraform을 사용하여 Google Workspace 및 AWS Route 53용 DKIM 레코드를 관리하면 이메일 인증 설정을 구성하고 유지하는 프로세스가 간소화된다. IaC로 자동화함으로써 재현성, 감사 가능성, 관리 용이성의 이점을 얻으면서 이메일이 스푸핑 및 기타 이메일 기반 공격으로부터 보호되도록 보장할 수 있다.&lt;/p&gt;</description></item><item><title>AWS Site-to-Site VPN 모니터링 자동화하기</title><link>https://ercan.cloud/ko/automate-aws-site-to-site-vpn-monitoring/</link><pubDate>Tue, 01 Oct 2024 06:49:31 +0300</pubDate><guid>https://ercan.cloud/ko/automate-aws-site-to-site-vpn-monitoring/</guid><description>&lt;p&gt;오늘날의 빠르게 변화하는 상호 연결된 세상에서, 온프레미스 환경과 클라우드 인프라 간의 &lt;strong&gt;안전하고 안정적인 통신&lt;/strong&gt;은 매우 중요하다. 많은 비즈니스에서 &lt;strong&gt;AWS Site-to-Site VPN&lt;/strong&gt;은 데이터 센터를 AWS에 연결하는 다리 역할을 하며, 비공개 암호화 통신 채널을 가능하게 한다. 그런데 VPN 터널이 다운되면 어떻게 될까? 적절한 가시성이나 알림 시스템이 없다면, 다운타임은 쉽게 감지되지 못해 결국 서비스 중단과 불만족스러운 고객으로 이어질 수 있다.&lt;/p&gt;
&lt;p&gt;바로 그 이유로 &lt;strong&gt;AWS Site-to-Site VPN 모니터링 스크립트&lt;/strong&gt;를 만들었다. VPN 연결 모니터링을 자동화하고 문제 발생 시 즉시 팀에 알리도록 설계된 도구다. 이 가이드에서는 이 스크립트의 작동 방식과 AWS VPN 연결 관리를 위한 게임 체인저가 되는 이유를 설명한다.&lt;/p&gt;</description></item><item><title>Docker 이미지 최적화: 이미지 크기와 빌드 시간 줄이기 팁</title><link>https://ercan.cloud/ko/optimizing-docker-images-tips-for-reducing-image-size-and-build-time/</link><pubDate>Fri, 27 Sep 2024 08:39:25 +0300</pubDate><guid>https://ercan.cloud/ko/optimizing-docker-images-tips-for-reducing-image-size-and-build-time/</guid><description>&lt;p&gt;안녕하세요, Docker 열정가 여러분! 오늘은 &lt;strong&gt;Docker 이미지 최적화&lt;/strong&gt;에 대해 깊이 파고들어 본다. 이 글을 마칠 때쯤이면 성능을 희생하지 않고 부피가 큰 이미지를 줄이고 빌드 시간을 단축하는 방법을 알게 될 것이다!&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;Docker 이미지 크기가 중요한 이유&lt;/h2&gt;
&lt;ul class="wp-block-list"&gt;&lt;li&gt;&lt;strong&gt;더 빠른 빌드&lt;/strong&gt;: 더 작은 이미지는 더 빠른 빌드를 의미하며, 더 빠른 반복 주기로 이어진다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;축소된 공격 표면&lt;/strong&gt;: 더 적은 레이어와 의존성을 가진 가벼운 이미지는 취약점 위험을 낮춘다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;더 낮은 배포 비용&lt;/strong&gt;: 더 슬림한 이미지는 호스트로 풀 될 때 더 적은 대역폭을 사용한다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;효율적 스토리지 사용&lt;/strong&gt;: 레지스트리가 공간을 차지하지 않아 감사할 것이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="wp-block-heading"&gt;최적화하자! Docker 이미지 크기와 빌드 시간을 줄이는 핵심 팁&lt;/h2&gt;
&lt;h3 class="wp-block-heading"&gt;1. &lt;strong&gt;최소 베이스 이미지로 시작하기&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;alpine&lt;/code&gt;과 같은 최소 이미지를 선택하라. 예를 들어 &lt;code&gt;node:16-alpine&lt;/code&gt;을 사용하면 수백 MB를 줄일 수 있다.&lt;/p&gt;</description></item><item><title>간단한 Bash 스크립트와 Slack 알림으로 EC2 디스크 공간 모니터링하기</title><link>https://ercan.cloud/ko/monitoring-ec2-disk-space-with-a-simple-bash-script-and-slack-alerts/</link><pubDate>Sun, 22 Sep 2024 15:25:41 +0300</pubDate><guid>https://ercan.cloud/ko/monitoring-ec2-disk-space-with-a-simple-bash-script-and-slack-alerts/</guid><description>&lt;h2 class="wp-block-heading"&gt;소개&lt;/h2&gt;
&lt;p&gt;클라우드 인프라 환경에서 EC2 인스턴스의 상태와 리소스를 모니터링하는 것은 필수적이다. 시스템 관리자의 일반적인 과제 중 하나는 디스크 공간이 부족해지지 않도록 하는 것으로, 이는 성능 저하나 서비스 중단으로 이어질 수 있다. AWS는 CloudWatch와 같은 강력한 모니터링 도구를 제공하지만, 특히 소규모 또는 덜 복잡한 설정에서는 추가 비용과 복잡성이 발생할 수 있다.&lt;/p&gt;
&lt;p&gt;이 글에서는 EC2 인스턴스에서 cron job으로 실행되는 &lt;strong&gt;Bash 스크립트&lt;/strong&gt;를 사용한 &lt;strong&gt;간단하고 비용 효율적인 솔루션&lt;/strong&gt;을 탐구한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;Bash 스크립트 솔루션&lt;/h2&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;#!/bin/bash
&lt;p&gt;THRESHOLD=85 # 디스크 사용량 임계값 정의 (%)
SLACK_WEBHOOK_URL=&amp;ldquo;&lt;a href="https://hooks.slack.com/services/your/webhook/url%22"&gt;https://hooks.slack.com/services/your/webhook/url"&lt;/a&gt;&lt;/p&gt;</description></item><item><title>Docker 컨테이너 보안: 컨테이너 보안을 위한 모범 사례</title><link>https://ercan.cloud/ko/securing-docker-containers-best-practices-for-container-security/</link><pubDate>Fri, 20 Sep 2024 15:19:47 +0300</pubDate><guid>https://ercan.cloud/ko/securing-docker-containers-best-practices-for-container-security/</guid><description>&lt;p&gt;컨테이너화에 대해 이야기할 때 Docker는 종종 가장 먼저 떠오르는 도구다. 애플리케이션을 개발, 배포, 배송하는 방식을 혁신했다. 하지만 큰 힘에는 큰 책임이 따른다, 그렇지 않은가? Docker가 프로세스를 간소화할 수 있는 만큼, 보안은 항상 최우선으로 고려해야 한다. 취약한 컨테이너는 전체 시스템을 위험에 빠뜨릴 수 있다.&lt;/p&gt;
&lt;p&gt;그러면 Docker 컨테이너를 어떻게 보호할 수 있을까? 몇 가지 모범 사례로 나누어 살펴보자!&lt;/p&gt;
&lt;h3 class="wp-block-heading"&gt;1. Docker Engine을 최신 상태로 유지하기&lt;/h3&gt;
&lt;p&gt;기본처럼 들리지만 이것이 얼마나 자주 간과되는지 놀랄 것이다. Docker는 정기적으로 취약점을 패치하고 보안 기능을 도입하는 업데이트를 출시한다.&lt;/p&gt;</description></item><item><title>Dockerfile 마스터하기: 효율적이고 확장 가능한 컨테이너 빌드 작성법</title><link>https://ercan.cloud/ko/mastering-dockerfile-writing-efficient-scalable-container-builds/</link><pubDate>Wed, 11 Sep 2024 08:04:25 +0300</pubDate><guid>https://ercan.cloud/ko/mastering-dockerfile-writing-efficient-scalable-container-builds/</guid><description>&lt;p&gt;Docker는 애플리케이션을 개발, 패키징, 배포하는 방식을 혁신했다. 이 컨테이너 마법의 중심에는 Docker 이미지를 빌드하기 위한 청사진인 &lt;strong&gt;Dockerfile&lt;/strong&gt;이 있다. Docker를 마스터하려면 &lt;strong&gt;효율적&lt;/strong&gt;이고 &lt;strong&gt;확장 가능한&lt;/strong&gt; Dockerfile을 작성하는 방법을 알아야 한다. 최적화되고 가벼우며 유지 관리 가능한 컨테이너 이미지를 보장하는 Dockerfile 작성을 위한 모범 사례를 깊이 파고들어 보자.&lt;/p&gt;
&lt;h3 class="wp-block-heading"&gt;&lt;strong&gt;1. 올바른 베이스 이미지로 시작하기&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;베이스 이미지 선택은 컨테이너의 기반을 설정한다. 베이스가 작을수록 결과 이미지는 더 가벼워진다. 여기에는 두 가지 주요 전략이 있다:&lt;/p&gt;
&lt;ul class="wp-block-list"&gt;&lt;li&gt;&lt;strong&gt;Alpine Linux&lt;/strong&gt;: 약 5MB의 초경량 이미지. 최소 크기가 중요한 마이크로서비스나 애플리케이션에 완벽하다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;공식 언어 이미지&lt;/strong&gt;: 언어별 애플리케이션(Node.js, Python, Golang)의 경우 공식 이미지가 필요한 의존성으로 사전 구성되어 있는 경우가 많다. &lt;code&gt;python:3.9-slim&lt;/code&gt;과 같은 slim 버전을 선택하라.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 class="wp-block-heading"&gt;&lt;strong&gt;2. Multi-Stage Build 사용하기&lt;/strong&gt;&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Multi-Stage Build&lt;/strong&gt;는 Docker 이미지를 가볍고 깨끗하게 유지하는 게임 체인저다. 처음 몇 단계에서 애플리케이션을 빌드하고, 마지막 단계에서는 필요한 아티팩트만 복사한다. 이 접근 방식은 빌드 타임 의존성을 제거하여 최종 이미지 크기를 극적으로 줄인다.&lt;/p&gt;</description></item><item><title>GPG 서명 커밋과 함께 Git 리포지토리를 GitLab에서 GitHub로 마이그레이션하기</title><link>https://ercan.cloud/ko/migrating-a-git-repository-from-gitlab-to-github-with-gpg-signed-commits/</link><pubDate>Mon, 02 Sep 2024 05:34:58 +0300</pubDate><guid>https://ercan.cloud/ko/migrating-a-git-repository-from-gitlab-to-github-with-gpg-signed-commits/</guid><description>&lt;p&gt;다음은 &lt;strong&gt;GPG 서명 커밋과 함께 Git 리포지토리를 GitLab에서 GitHub로 마이그레이션&lt;/strong&gt;하는 방법에 대한 종합 가이드다:&lt;/p&gt;
&lt;hr class="wp-block-separator has-alpha-channel-opacity"/&gt;
&lt;h2 class="wp-block-heading"&gt;GPG 서명 커밋과 함께 Git 리포지토리를 GitLab에서 GitHub로 마이그레이션하기&lt;/h2&gt;
&lt;h3 class="wp-block-heading"&gt;소개&lt;/h3&gt;
&lt;p&gt;오늘날의 DevOps 주도 세상에서 Git과 같은 버전 관리 시스템은 소프트웨어 개발의 백본이다. GitLab과 GitHub는 Git 리포지토리 관리를 위한 가장 인기 있는 두 플랫폼이다. GitHub의 광범위한 통합, 커뮤니티, 기능 세트를 활용하기 위해 리포지토리를 GitLab에서 GitHub로 마이그레이션하는 경우가 있다.&lt;/p&gt;
&lt;p&gt;리포지토리 마이그레이션 시 코드의 무결성과 진위성을 유지하는 핵심 측면은 모든 커밋이 GPG 서명되었는지 확인하는 것이다. GPG 서명은 커밋 작성자의 신원을 확인하고 커밋 이력의 변조를 방지하는 데 도움이 된다.&lt;/p&gt;</description></item><item><title>0.0.0.0/0 없이 Private Subnet에서 AWS 서비스에 접근하기</title><link>https://ercan.cloud/ko/accessing-aws-services-in-private-subnets-without-0-0-0-0-0/</link><pubDate>Sat, 24 Aug 2024 14:56:44 +0300</pubDate><guid>https://ercan.cloud/ko/accessing-aws-services-in-private-subnets-without-0-0-0-0-0/</guid><description>&lt;p&gt;AWS(Amazon Web Services)에서 작업할 때 인프라 보안은 가장 중요하다. 가장 일반적인 보안 관행 중 하나는 전 세계의 모든 IP 주소를 나타내는 &lt;code&gt;0.0.0.0/0&lt;/code&gt;의 사용을 피해 Private Subnet으로의 접근을 제한하는 것이다. 이는 보안을 강화하지만, 애플리케이션과 서비스가 다양한 AWS 서비스와 상호작용해야 할 때 문제를 야기할 수 있다. 이 글에서는 리소스를 공개 인터넷에 노출시키지 않고 Private Subnet에서 AWS 서비스에 안전하게 접근하는 방법을 안내한다.&lt;/p&gt;
&lt;p&gt;이 가이드에서는 이를 달성하기 위한 다양한 방법을 탐구하고, 특정 AWS 서비스를 자세히 살펴보며, 이러한 전략을 구현하는 데 도움이 되는 실용적인 예제를 제공한다. 숙련된 AWS 사용자든 이제 막 시작했든, 이 가이드는 클라우드 인프라의 보안과 기능성을 향상시키는 지식을 제공할 것이다.&lt;/p&gt;</description></item><item><title>AWS 리전, Availability Zone, VPC 이해하기: 종합 가이드</title><link>https://ercan.cloud/ko/understanding-aws-regions-availability-zones-and-vpcs/</link><pubDate>Wed, 21 Aug 2024 19:17:28 +0300</pubDate><guid>https://ercan.cloud/ko/understanding-aws-regions-availability-zones-and-vpcs/</guid><description>&lt;h2 class="wp-block-heading"&gt;소개&lt;/h2&gt;
&lt;p&gt;오늘날의 클라우드 컴퓨팅 환경에서 Amazon Web Services(AWS)는 모든 규모의 조직에 광범위한 서비스를 제공하는 선두주자로 자리 잡았다. 핵심 기능 중에는 AWS 리전, Availability Zone(AZ), Virtual Private Cloud(VPC)가 있으며, 이는 AWS 인프라의 기반을 형성한다. 이러한 개념을 이해하는 것은 확장 가능하고 안정적이며 안전한 클라우드 솔루션을 설계하려는 모든 사람에게 매우 중요하다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;AWS 리전이란?&lt;/h2&gt;
&lt;p&gt;AWS 리전은 AWS가 데이터 센터를 보유한 지리적 위치다. 각 리전은 Availability Zone이라고 알려진 여러 개의 격리되고 물리적으로 분리된 데이터 센터로 구성된다. 현재 AWS는 전 세계적으로 30개 이상의 리전을 제공한다.&lt;/p&gt;</description></item><item><title>AWS Network Load Balancer와 헤더 수정 기법</title><link>https://ercan.cloud/ko/aws-network-load-balancers-with-header-modification-techniques/</link><pubDate>Mon, 10 Jun 2024 23:25:29 +0300</pubDate><guid>https://ercan.cloud/ko/aws-network-load-balancers-with-header-modification-techniques/</guid><description>&lt;p&gt;AWS Network Load Balancer(NLB)는 단일 또는 여러 Availability Zone에 걸쳐 Amazon EC2 인스턴스와 같은 여러 대상에 수신 애플리케이션 트래픽을 분산하는 강력한 도구다. 높은 처리량과 낮은 레이턴시를 제공하며, 초당 수백만 건의 요청을 처리하면서도 초저 레이턴시를 유지하도록 설계되었다. 그러나 NLB의 한 가지 제한 사항은 HTTP 헤더를 직접 수정할 수 없다는 점이다. 이 글에서는 이 제한을 우회하는 다양한 기법을 탐구하고, 자신의 AWS 환경에서 이러한 솔루션을 구현하는 데 도움이 되는 완전한 예제를 제공한다.&lt;/p&gt;
&lt;h4 class="wp-block-heading"&gt;AWS Network Load Balancer 소개&lt;/h4&gt;
&lt;p&gt;AWS Network Load Balancer는 연결 수준(Layer 4)에서 작동하며, IP 프로토콜 데이터를 기반으로 대상에 연결을 라우팅한다. NLB는 극한의 성능과 낮은 레이턴시가 필요한 애플리케이션에 이상적이며, 게이밍, 금융 거래, 비디오 스트리밍과 같은 실시간 애플리케이션에 적합하다.&lt;/p&gt;</description></item><item><title>단일 Terragrunt 파일에서 여러 Terraform 모듈 호출하는 방법</title><link>https://ercan.cloud/ko/how-to-call-multiple-terraform-modules-in-a-single-terragrunt-file/</link><pubDate>Tue, 07 May 2024 20:15:35 +0300</pubDate><guid>https://ercan.cloud/ko/how-to-call-multiple-terraform-modules-in-a-single-terragrunt-file/</guid><description>&lt;p&gt;Terragrunt에서는 &lt;code&gt;terraform&lt;/code&gt; 블록을 자식 구성과 결합하여 단일 Terragrunt 구성 파일에서 여러 Terraform 모듈을 호출할 수 있다. 이는 일반적으로 각 모듈이 자체 Terragrunt 파일에서 참조되지만 부모 Terragrunt 파일을 사용하여 중앙에서 관리되는 계층 구조로 Terragrunt 구성을 구성함으로써 수행된다.&lt;/p&gt;
&lt;p&gt;이를 구조화하는 기본적인 개요는 다음과 같다:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;부모 Terragrunt 파일 생성&lt;/strong&gt;: 이 파일은 리소스를 직접 배포하지 않지만 공통 설정을 구성하고 모듈 배포를 오케스트레이션하는 데 사용된다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;각 모듈에 대한 자식 Terragrunt 파일 생성&lt;/strong&gt;: 각 모듈은 Terraform 모듈의 소스와 필요한 입력을 지정하는 자체 Terragrunt 구성 파일을 가진다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 class="wp-block-heading"&gt;예시 구조&lt;/h3&gt;
&lt;p&gt;다음은 예시 디렉토리 구조다:&lt;/p&gt;</description></item><item><title>커밋 메시지 표준 강제를 위한 Git Hooks 활용: 크로스 플랫폼 개발 팀을 위한 가이드</title><link>https://ercan.cloud/ko/leveraging-git-hooks-for-enforcing-commit-message-standards-a-guide-for-cross-platform-development-teams/</link><pubDate>Wed, 03 Apr 2024 14:33:40 +0300</pubDate><guid>https://ercan.cloud/ko/leveraging-git-hooks-for-enforcing-commit-message-standards-a-guide-for-cross-platform-development-teams/</guid><description>&lt;p&gt;소프트웨어 개발의 세계에서 깨끗하고 탐색 가능한 커밋 이력을 유지하는 것은 단순한 깔끔함의 문제가 아니라 효율적인 팀워크와 프로젝트 관리의 초석이다. 커밋 메시지는 일기장이나 로그북 역할을 하며, 각 변경 사항의 이유와 내용에 대한 통찰을 제공한다.&lt;/p&gt;
&lt;p&gt;이 가이드는 다양한 운영 체제에서 SemVer 및 Conventional Commits와 같은 커밋 메시지 표준을 강제하는 솔루션으로 Git Hooks를 소개한다.&lt;/p&gt;
&lt;h3 class="wp-block-heading"&gt;Git Hooks란 무엇인가?&lt;/h3&gt;
&lt;p&gt;Git Hooks는 커밋, 푸시, 머지 작업과 같은 Git 라이프사이클 이벤트 전후에 자동으로 실행되는 스크립트다. 수동 감독 없이 프로젝트 규칙과 워크플로우를 자동화하고 강제하는 강력한 도구다.&lt;/p&gt;</description></item><item><title>Let's Encrypt와 CLI.ini로 SSL 단순화하기: DevOps 가이드</title><link>https://ercan.cloud/ko/simplifying-ssl-with-lets-encrypt-and-cli-ini-a-devops-guide/</link><pubDate>Mon, 25 Mar 2024 12:29:07 +0300</pubDate><guid>https://ercan.cloud/ko/simplifying-ssl-with-lets-encrypt-and-cli-ini-a-devops-guide/</guid><description>&lt;p&gt;광활한 인터넷에서 보안은 사치가 아니라 필수다. 웹 개발자와 시스템 관리자에게 웹 트래픽이 암호화되도록 보장하는 것은 사용자 데이터 보호의 기본적인 측면이다. 여기 Let's Encrypt가 등장한다. 웹사이트를 보호하는 방식을 혁신한 무료, 자동화, 개방형 인증 기관(CA)이다. 이 가이드는 &lt;code&gt;cli.ini&lt;/code&gt; 구성 파일의 힘에 초점을 맞추어 Let's Encrypt 사용의 복잡성을 풀어내고, HTTPS로 웹 서버를 보호하는 포괄적인 소개를 제공한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;Certbot과 CLI.ini의 역할&lt;/h2&gt;
&lt;p&gt;Certbot은 인증서 취득 및 갱신 프로세스를 단순화하도록 설계된 가장 인기 있는 Let's Encrypt 클라이언트다. Certbot의 명령줄 인터페이스는 직관적이지만, 여러 인증서를 관리하거나 갱신 프로세스를 자동화하는 것은 번거로울 수 있다. 바로 여기서 &lt;code&gt;cli.ini&lt;/code&gt; 파일이 귀중해진다.&lt;/p&gt;</description></item><item><title>TCP vs. UDP: 개발자와 DevOps로서 프로토콜 탐색하기</title><link>https://ercan.cloud/ko/tcp-vs-udp-navigating-the-protocols-as-developers-and-devops/</link><pubDate>Tue, 05 Mar 2024 19:06:53 +0300</pubDate><guid>https://ercan.cloud/ko/tcp-vs-udp-navigating-the-protocols-as-developers-and-devops/</guid><description>&lt;p&gt;오늘은 인터넷의 두 가지 핵심 프로토콜인 TCP(Transmission Control Protocol)와 UDP(User Datagram Protocol)의 매혹적인 탐구를 시작한다. TCP와 UDP의 뉘앙스를 이해하는 것은 개발자와 DevOps 전문가 모두에게 매우 중요하며, 애플리케이션 설계부터 네트워크 트러블슈팅까지 모든 것에 영향을 미친다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;TCP와 UDP 이해하기&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;TCP (Transmission Control Protocol)&lt;/strong&gt;: TCP는 패키지(데이터)가 정확하고 순서대로 전달되도록 보장하는 꼼꼼한 택배 기사와 같다. 데이터를 전송하기 전에 연결을 설정하고, 데이터가 목적지에 도달했는지 확인하며, 필요한 경우 재전송한다. 신뢰성이 가장 중요할 때 TCP가 최선의 선택이다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;UDP (User Datagram Protocol)&lt;/strong&gt;: UDP를 엽서 서비스로 상상해보라. 빠르고 간단하지만 배달을 보장하지 않는다. 연결을 설정하거나 수신자가 받았는지 확인하지 않고 메시지(데이터그램)를 보낸다. 속도가 중요하고 몇 개의 손실되거나 순서가 잘못된 패킷이 허용될 때 UDP가 이상적이다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="wp-block-heading"&gt;개발자와 DevOps가 알아야 할 사항&lt;/h2&gt;
&lt;h3 class="wp-block-heading"&gt;개발자용:&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;애플리케이션 요구사항&lt;/strong&gt;: 웹 서버, 이메일, 파일 전송과 같이 데이터 무결성과 순서가 중요한 애플리케이션에는 TCP를 선택하라. 실시간 오디오/비디오 스트리밍이나 게이밍과 같이 낮은 레이턴시가 필수적이고 일부 데이터 손실이 허용되는 경우 UDP를 선택하라.&lt;/li&gt;
&lt;h3 class="wp-block-heading"&gt;DevOps용:&lt;/h3&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;네트워크 모니터링 및 트러블슈팅&lt;/strong&gt;: 네트워크 모니터링 도구를 능숙하게 사용하여 TCP 및 UDP 트래픽을 추적하고, 문제를 나타낼 수 있는 병목 현상이나 이상을 식별하라.&lt;/li&gt;
&lt;h2 class="wp-block-heading"&gt;결론&lt;/h2&gt;
&lt;p&gt;네트워크 통신의 복잡한 춤에서 TCP와 UDP는 각각의 강점과 특이성을 가지고 핵심적인 역할을 수행한다. 개발자와 DevOps 전문가로서 이러한 프로토콜을 이해하면 견고하고 효율적이며 반응성이 뛰어난 애플리케이션과 인프라를 설계할 수 있다. TCP와 UDP의 영역이 당신의 숙달을 기다리고 있다!&lt;/p&gt;</description></item><item><title>AWS VPC IP 버전: IPv4 vs. IPv6</title><link>https://ercan.cloud/ko/aws-vpc-ip-versions-ipv4-vs-ipv6/</link><pubDate>Sat, 03 Feb 2024 18:59:00 +0300</pubDate><guid>https://ercan.cloud/ko/aws-vpc-ip-versions-ipv4-vs-ipv6/</guid><description>&lt;p&gt;안녕하세요, 클라우드 선구자 여러분! 오늘은 AWS VPC의 영역을 통해 깨우침을 주는 여정을 떠나며, IPv4와 IPv6의 흥미로운 비교에 초점을 맞춘다. 정교한 클라우드 아키텍처를 오케스트레이션하든 인터넷 프로토콜의 미묘한 움직임을 이해하고자 하든, 제대로 찾아왔다. 자, 이제 AWS VPC 내에서 IPv4와 IPv6의 미스터리를 풀어내며, 인사이트, 예제, 그리고 상세한 설명을 제공한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;AWS VPC 소개&lt;/h2&gt;
&lt;p&gt;AWS Virtual Private Cloud(VPC)는 클라우드 안의 당신만의 샌드박스로, 정의한 가상 네트워크에서 AWS 리소스를 실행할 수 있는 논리적으로 격리된 AWS 클라우드 구역을 제공한다. 네트워크 구성에 대한 유연성과 제어는 경이로우며, IP 주소 범위를 선택하고, 서브넷을 생성하며, 라우트 테이블과 네트워크 게이트웨이를 구성할 수 있다.&lt;/p&gt;</description></item><item><title>AWS S3 CORS 설정: 심층 분석</title><link>https://ercan.cloud/ko/aws-s3-cors-settings-a-deep-dive/</link><pubDate>Fri, 05 Jan 2024 18:56:43 +0300</pubDate><guid>https://ercan.cloud/ko/aws-s3-cors-settings-a-deep-dive/</guid><description>&lt;p&gt;안녕하세요, 클라우드 열정가 여러분! 오늘은 AWS S3 CORS 설정의 세계로 깊이 들어가 본다. 처음에는 어렵게 느껴질 수 있지만, 이해하면 매우 보람 있는 주제다. 숙련된 AWS 베테랑이든 이제 막 시작했든, S3의 CORS 설정을 마스터하면 웹 애플리케이션의 기능성과 보안을 크게 향상시킬 수 있다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;CORS란 무엇인가?&lt;/h2&gt;
&lt;p&gt;Cross-Origin Resource Sharing(CORS)은 버킷의 리소스가 애플리케이션이 호스팅된 도메인과 다른 도메인에서 어떤 방식으로 접근될 수 있는지 지정할 수 있게 해주는 보안 기능이다. Amazon S3의 맥락에서는 버킷의 파일이 다른 웹사이트와 어떻게 공유되는지를 제어한다.&lt;/p&gt;</description></item><item><title>AWS에서 리전과 Availability Zone의 중요성</title><link>https://ercan.cloud/ko/importance-of-regions-and-availability-zones-on-aws/</link><pubDate>Fri, 15 Dec 2023 19:12:11 +0300</pubDate><guid>https://ercan.cloud/ko/importance-of-regions-and-availability-zones-on-aws/</guid><description>&lt;p&gt;오늘은 Amazon Web Services(AWS)에서 견고하고 복원력 있으며 효율적인 애플리케이션을 설계하는 데 있어 핵심적인 측면을 탐구한다: AWS 리전과 Availability Zone(AZ)의 이해와 활용. 이 글은 이러한 핵심 개념을 설명할 뿐만 아니라, 인기 있는 Infrastructure-as-Code 도구인 Terraform을 사용한 모범 사례와 실용적인 예제를 안내한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;AWS 리전과 Availability Zone 공개&lt;/h2&gt;
&lt;p&gt;AWS 글로벌 인프라의 핵심에는 리전과 Availability Zone이 있다. 이러한 요소는 고가용성, 낮은 레이턴시, 규제 요구사항 준수를 달성하는 데 기본이 된다.&lt;/p&gt;
&lt;h3 class="wp-block-heading"&gt;AWS 리전&lt;/h3&gt;
&lt;p&gt;AWS 리전은 전 세계의 별개의 지리적 위치로, 각각 여러 개의 격리된 Availability Zone을 호스팅한다. 각 리전은 별개의 엔티티로, 한 리전의 장애가 다른 리전에 영향을 미치지 않도록 보장한다. 비즈니스에서 적절한 리전을 선택하는 것은 레이턴시 최소화, 데이터 주권 법률 준수, 비용 최적화에 매우 중요하다.&lt;/p&gt;</description></item><item><title>Bash For Loop의 힘: 스크립팅 작업 간소화하기</title><link>https://ercan.cloud/ko/the-power-of-bash-for-loops-streamlining-your-scripting-tasks/</link><pubDate>Sat, 02 Dec 2023 17:30:03 +0300</pubDate><guid>https://ercan.cloud/ko/the-power-of-bash-for-loops-streamlining-your-scripting-tasks/</guid><description>&lt;p&gt;스크립팅과 자동화의 세계에서 Bash는 Unix 및 Linux 시스템에서 다재다능하고 널리 사용되는 셸로 두드러진다. 많은 기능 중에서 for loop는 반복적인 작업을 효율적으로 자동화할 수 있게 해주는 기본적인 구조다. 이 블로그 글에서는 Bash for loop의 복잡성을 파고들어 구문, 사용법, 실용적인 응용을 탐구한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;For Loop의 기본 이해하기&lt;/h2&gt;
&lt;p&gt;for loop의 기본 구문은 다음과 같다:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;for variable in list
do
 # 실행할 명령
done&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="wp-block-heading"&gt;Bash에서의 For Loop 유형&lt;/h2&gt;
&lt;h3 class="wp-block-heading"&gt;전통적인 For Loop&lt;/h3&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;for (( i=0; i&amp;lt;10; i++ ))
do
 echo $i
done&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class="wp-block-heading"&gt;리스트 순회&lt;/h3&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;for color in red green blue
do
 echo "Color: $color"
done&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class="wp-block-heading"&gt;명령 출력 순회&lt;/h3&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;for file in $(ls)
do
 echo "File: $file"
done&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="wp-block-heading"&gt;실용적인 응용&lt;/h2&gt;
&lt;p&gt;For loop는 시스템 관리(파일 일괄 처리, 사용자 계정 관리), 데이터 처리(파일 형식 변환, 데이터 추출), 웹 개발(빌드 프로세스 자동화, 테스트) 등에 매우 유용하다.&lt;/p&gt;</description></item><item><title>AWS VPC 설계: 서브넷, AZ, Dual-Stack IP 통합하기</title><link>https://ercan.cloud/ko/aws-vpc-design-integrating-subnets-azs-and-dual-stack-ip/</link><pubDate>Wed, 01 Nov 2023 19:31:04 +0300</pubDate><guid>https://ercan.cloud/ko/aws-vpc-design-integrating-subnets-azs-and-dual-stack-ip/</guid><description>&lt;p&gt;환영합니다, 클라우드 아키텍트와 네트워크 전문가 여러분! 오늘은 AWS에서 Virtual Private Cloud(VPC)를 설계하는 통찰력 있는 탐구를 시작하며, 서브넷, Availability Zone(AZ), 그리고 IPv4와 IPv6를 위한 Dual-Stack 구성을 세심하게 엮어낸다. 조직이 견고하고 확장 가능하며 미래에 대비한 네트워크 아키텍처를 추구함에 따라, 이러한 구성 요소들의 상호작용을 이해하는 것이 무엇보다 중요하다. 자, 이제 AWS VPC 설계의 복잡성을 풀어내며, 자신감과 선견지명을 가지고 네트워크를 설계할 수 있는 지식을 갖추도록 하자.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;AWS VPC 설계의 기초&lt;/h2&gt;
&lt;h3 class="wp-block-heading"&gt;VPC와 서브넷 이해하기&lt;/h3&gt;
&lt;p&gt;핵심적으로 AWS VPC는 가상 네트워크를 정의하고 제어할 수 있는 클라우드의 분리된 구역이다. 이 환경 내에서 서브넷은 VPC의 IP 주소 범위를 세분화하는 하위 구분 역할을 하며, IP 주소를 효율적으로 할당하고 기능적 또는 보안적 필요에 따라 리소스를 구성할 수 있게 한다.&lt;/p&gt;</description></item><item><title>스마트워치를 고려해야 할 7가지 이유</title><link>https://ercan.cloud/ko/7-reasons-to-consider-getting-a-smartwatch/</link><pubDate>Tue, 31 Oct 2023 19:16:43 +0300</pubDate><guid>https://ercan.cloud/ko/7-reasons-to-consider-getting-a-smartwatch/</guid><description>&lt;p&gt;스마트워치를 차고 다니는 사람들을 꽤 많이 보았을 것이다. 그 트렌드가 무엇이 대단한지 궁금하게 만들 수도 있다.&lt;/p&gt;
&lt;p&gt;스마트워치를 제조하는 브랜드는 여러 곳이 있지만, Apple이 (놀랍지 않게도) 아마 최상위일 것이다.&lt;/p&gt;
&lt;p&gt;호기심이든 주변의 압박이든, 스마트워치를 직접 구매할 생각을 하고 있을 수 있다. 그렇다면 그 결정을 정당화할 이유는 꽤 많다. 스마트워치는 눈에 보이는 것 이상을 제공하며, 이 글에서 바로 그것을 다룰 것이다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;&lt;strong&gt;패션 스테이트먼트&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;바로 이걸 짚고 넘어가자. 스마트워치는 Rolex나 다른 손목시계만큼 눈에 띄지 않을 수 있지만, 패션 액세서리로서의 측면은 여전히 존재한다.&lt;/p&gt;</description></item><item><title>Ubuntu에서 SSH 활성화하는 방법: 단계별 가이드</title><link>https://ercan.cloud/ko/how-to-enable-ssh-on-ubuntu-a-step-by-step-guide/</link><pubDate>Thu, 19 Oct 2023 18:15:00 +0300</pubDate><guid>https://ercan.cloud/ko/how-to-enable-ssh-on-ubuntu-a-step-by-step-guide/</guid><description>&lt;p&gt;&lt;strong&gt;소개&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Secure Shell(SSH)은 시스템 관리자, 개발자, IT 전문가에게 필수적인 도구다. 원격 서버에 안전하게 접근할 수 있는 방법을 제공하여 시스템을 원격으로 관리하는 데 매우 귀중한 리소스다. 가장 인기 있는 Linux 배포판 중 하나인 Ubuntu 사용자에게 SSH 설정은 시스템의 사용성과 보안을 크게 향상시킬 수 있다. 이 블로그 글에서는 Ubuntu에서 SSH를 활성화하는 과정을 안내하여 원활하고 안전한 원격 접근 경험을 보장한다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SSH란 무엇인가?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;SSH(Secure Shell)는 안전한 데이터 통신, 원격 셸 서비스, 명령 실행을 가능하게 하는 네트워크 프로토콜이다. 시스템 관리자가 시스템과 애플리케이션을 원격으로 관리하는 데 널리 사용된다. SSH는 전송되는 데이터를 암호화하여 민감한 정보가 무단 접근으로부터 안전하게 보호되도록 한다.&lt;/p&gt;</description></item><item><title>Vim: 효율적인 편집을 위한 핵심 마스터하기</title><link>https://ercan.cloud/ko/vim-mastering-the-essentials-for-efficient-editing/</link><pubDate>Mon, 25 Sep 2023 17:53:44 +0300</pubDate><guid>https://ercan.cloud/ko/vim-mastering-the-essentials-for-efficient-editing/</guid><description>&lt;h2 class="wp-block-heading"&gt;소개&lt;/h2&gt;
&lt;p&gt;텍스트 편집의 세계에서 Vim은 효율성과 속도를 최우선시하는 강력한 키보드 중심 편집기로 두드러진다. Unix 환경에서 시작된 Vim(Vi Improved)은 가파른 학습 곡선을 넘으면 높은 수준의 생산성을 제공하는 것으로 유명하다.&lt;/p&gt;
&lt;h3 class="wp-block-heading"&gt;Vim을 사용해야 하는 이유&lt;/h3&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;속도&lt;/strong&gt;: Vim은 키보드를 효율적으로 사용하도록 설계되었다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;가용성&lt;/strong&gt;: 거의 모든 Unix 계열 시스템에서 사용 가능.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;커스터마이징&lt;/strong&gt;: 사용자가 자신의 명령과 자동화를 만들 수 있다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;강력함&lt;/strong&gt;: 광범위한 명령으로 복잡한 편집 작업을 쉽게 처리.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 class="wp-block-heading"&gt;기본 Vim 명령어&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Vim 열기&lt;/strong&gt;: &lt;code&gt;vim&lt;/code&gt;, &lt;strong&gt;파일 열기&lt;/strong&gt;: &lt;code&gt;vim filename&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;저장&lt;/strong&gt;: &lt;code&gt;Esc&lt;/code&gt; 후 &lt;code&gt;:w&lt;/code&gt;, &lt;strong&gt;종료&lt;/strong&gt;: &lt;code&gt;:q&lt;/code&gt;, &lt;strong&gt;저장 후 종료&lt;/strong&gt;: &lt;code&gt;:wq&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;커서 이동&lt;/strong&gt;: &lt;code&gt;h&lt;/code&gt;, &lt;code&gt;j&lt;/code&gt;, &lt;code&gt;k&lt;/code&gt;, &lt;code&gt;l&lt;/code&gt; (좌, 하, 상, 우)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;단어 점프&lt;/strong&gt;: &lt;code&gt;w&lt;/code&gt; (다음 단어 시작), &lt;code&gt;e&lt;/code&gt; (단어 끝), &lt;code&gt;b&lt;/code&gt; (이전 단어 시작)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;복사&lt;/strong&gt;: &lt;code&gt;yy&lt;/code&gt; (한 줄), &lt;strong&gt;붙여넣기&lt;/strong&gt;: &lt;code&gt;p&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;실행 취소&lt;/strong&gt;: &lt;code&gt;u&lt;/code&gt;, &lt;strong&gt;다시 실행&lt;/strong&gt;: &lt;code&gt;Ctrl-r&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;검색&lt;/strong&gt;: &lt;code&gt;/검색어&lt;/code&gt;, &lt;strong&gt;교체&lt;/strong&gt;: &lt;code&gt;:%s/old/new/g&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 class="wp-block-heading"&gt;결론&lt;/h2&gt;
&lt;p&gt;Vim은 익숙해지면 강력한 도구다. 복사, 실행 취소, 다시 실행, 단어 간 점프를 위한 기본 명령어를 이해하는 것이 훌륭한 시작이다. Vim 마스터의 핵심은 인내와 연습이다. 시간이 지나면 Vim이 편집 프로세스를 크게 가속화할 수 있다는 것을 알게 될 것이다.&lt;/p&gt;</description></item><item><title>CAA DNS 레코드 이해하기: 무엇을, 왜, 어떻게?</title><link>https://ercan.cloud/ko/understanding-caa-dns-records-what-why-and-how/</link><pubDate>Mon, 25 Sep 2023 13:27:12 +0300</pubDate><guid>https://ercan.cloud/ko/understanding-caa-dns-records-what-why-and-how/</guid><description>&lt;p&gt;디지털 세계는 보안과 신뢰로 번성한다. 이 신뢰의 기본 측면 중 하나는 HTTPS의 백본인 SSL/TLS 인증서다. 인터넷이 성숙해짐에 따라 인증서 발급 프로세스를 개선해야 할 필요성도 커진다. 여기 CAA(Certificate Authority Authorization) DNS 레코드가 등장한다.&lt;/p&gt;
&lt;h3 class="wp-block-heading"&gt;CAA DNS 레코드란 무엇인가?&lt;/h3&gt;
&lt;p&gt;CAA(Certificate Authority Authorization)는 도메인 소유자가 자신의 도메인에 대해 인증서를 발급할 수 있는 인증 기관(CA)을 지정할 수 있게 해주는 DNS 레코드 유형이다.&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;example.com. CAA 0 issue "amazon.com"
example.com. CAA 0 issue "comodo.com"
example.com. CAA 0 issue "letsencrypt.org"&lt;/code&gt;&lt;/pre&gt;
&lt;h3 class="wp-block-heading"&gt;CAA DNS 레코드가 필요한 이유&lt;/h3&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;향상된 보안&lt;/strong&gt;: 도메인이 실수로 위조 또는 잘못 발급된 인증서로부터 보호된다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;통제&lt;/strong&gt;: 도메인 소유자가 SSL/TLS 인증서에 대한 더 큰 통제권을 가진다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;감사 추적&lt;/strong&gt;: 승인되지 않은 인증서 요청의 기록을 제공한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 class="wp-block-heading"&gt;실용적인 예시: AWS ACM과 CloudFlare&lt;/h3&gt;
&lt;p&gt;이메일 검증 방법을 사용하여 AWS ACM을 통해 &lt;code&gt;ercanermis.com&lt;/code&gt; 및 &lt;code&gt;*.ercanermis.com&lt;/code&gt;에 대한 SSL 인증서를 생성하려고 한다고 가정하자. &lt;code&gt;ercanermis.com&lt;/code&gt;에 이미 CAA 레코드가 설정되어 있지만 CloudFlare에 와일드카드 설정이 없다면 문제가 발생할 수 있다.&lt;/p&gt;</description></item><item><title>AWS VPC 마스터하기: Virtual Private Cloud 라우팅 입문</title><link>https://ercan.cloud/ko/mastering-aws-vpc-an-introduction-to-virtual-private-cloud-routing/</link><pubDate>Sun, 13 Aug 2023 12:03:24 +0300</pubDate><guid>https://ercan.cloud/ko/mastering-aws-vpc-an-introduction-to-virtual-private-cloud-routing/</guid><description>&lt;p&gt;클라우드 컴퓨팅의 세계는 그 어느 때보다 접근하기 쉽고 다양하다. 조직이 클라우드로 마이그레이션함에 따라 AWS(Amazon Web Services), 특히 VPC(Virtual Private Cloud) 서비스가 주요 솔루션으로 두드러진다. 이 입문서에서는 AWS VPC 라우팅을 깊이 파고들어, 최적화되고 안전한 클라우드 환경에 기여하는 핵심 개념들을 명확히 설명한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;AWS VPC란 무엇인가?&lt;/h2&gt;
&lt;p&gt;핵심적으로 AWS VPC는 사용자가 가상 네트워크 내에서 AWS 리소스를 실행할 수 있는, Amazon Web Services 클라우드의 커스터마이징 가능하고 격리된 구역이다. IP 주소 범위, 서브넷, 라우트 테이블, 네트워크 게이트웨이를 제어하는 AWS 클라우드의 개인적인 청크라고 생각하면 된다.&lt;/p&gt;</description></item><item><title>새로운 AWS 공용 IPv4 주소 요금과 Public IP Insights 이해하기</title><link>https://ercan.cloud/ko/understanding-the-new-aws-public-ipv4-address-charge-and-public-ip-insights/</link><pubDate>Sun, 30 Jul 2023 18:57:40 +0300</pubDate><guid>https://ercan.cloud/ko/understanding-the-new-aws-public-ipv4-address-charge-and-public-ip-insights/</guid><description>&lt;p&gt;안녕하세요,&lt;/p&gt;
&lt;p&gt;Amazon Web Services(AWS)에서 서비스 사용 방식에 영향을 미칠 수 있는 중요한 업데이트를 공유하고자 한다. AWS는 2024년 2월 1일부터 공용 IPv4 주소에 대한 새로운 요금을 발표했다. 이 변경 사항은 서비스에 연결되었는지 여부에 관계없이 모든 공용 IPv4 주소에 대해 IP당 시간당 $0.005의 요금이 부과된다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;새로운 요금이 부과되는 이유&lt;/h2&gt;
&lt;p&gt;IPv4 주소는 점점 더 희소한 자원이 되고 있다. 지난 5년 동안 단일 공용 IPv4 주소를 획득하는 비용이 300% 이상 상승했다. 이 새로운 요금은 AWS 자체 비용을 반영하며, 사용자가 공용 IPv4 주소 사용에 더 절약하도록 장려하기 위한 것이다.&lt;/p&gt;</description></item><item><title>Docker Multi-Stage Build: 심층 가이드</title><link>https://ercan.cloud/ko/docker-multi-stage-builds-an-in-depth-guide/</link><pubDate>Sat, 29 Jul 2023 09:09:39 +0300</pubDate><guid>https://ercan.cloud/ko/docker-multi-stage-builds-an-in-depth-guide/</guid><description>&lt;h2 class="wp-block-heading"&gt;소개&lt;/h2&gt;
&lt;p&gt;Docker는 애플리케이션을 개발, 패키징, 배포하는 방식을 혁신했다. 개발부터 프로덕션까지 애플리케이션이 실행되는 일관된 환경을 제공하여 "내 컴퓨터에서는 되는데" 문제를 줄여준다. Docker가 도입한 가장 강력한 기능 중 하나는 Multi-Stage Build다. 이 기능은 번거로움 없이 가볍고 효율적인 컨테이너를 만들 수 있게 해준다. 이 블로그 글에서는 Docker Multi-Stage Build, 그 이점, 그리고 모범 사례를 깊이 탐구한다. 또한 개념을 설명하기 위한 예제 Dockerfile도 제공한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;Docker Multi-Stage Build란 무엇인가?&lt;/h2&gt;
&lt;p&gt;Docker Multi-Stage Build는 Dockerfile에서 여러 &lt;code&gt;FROM&lt;/code&gt; 문을 사용할 수 있게 해주는 기능이다. 각 &lt;code&gt;FROM&lt;/code&gt; 문은 다른 베이스 이미지를 사용할 수 있으며 빌드의 새로운 단계를 시작한다. 한 단계에서 다른 단계로 아티팩트를 선택적으로 복사할 수 있으며, 최종 이미지에 필요하지 않은 모든 것을 남겨둘 수 있다. 이를 통해 빌드와 패키징 프로세스를 서로 다른 단계로 분리하여 더 작고 효율적인 이미지를 만들 수 있다.&lt;/p&gt;</description></item><item><title>Docker Run 명령어 마스터하기: 종합 가이드</title><link>https://ercan.cloud/ko/mastering-docker-run-command-a-comprehensive-guide/</link><pubDate>Sat, 29 Jul 2023 09:02:20 +0300</pubDate><guid>https://ercan.cloud/ko/mastering-docker-run-command-a-comprehensive-guide/</guid><description>&lt;p&gt;현대 소프트웨어 개발에서 Docker의 사용은 널리 퍼져 있으며, 그럴 만한 이유가 있다. Docker는 개발자가 애플리케이션 배포를 단순화하는 가볍고 이식성 있는 소프트웨어 컨테이너를 구축할 수 있도록 돕는다. Docker의 명령줄 인터페이스(CLI)에서 가장 강력한 명령 중 하나는 &lt;code&gt;docker run&lt;/code&gt; 명령이다. 그러나 방대한 수의 옵션으로 인해 초보자에게는 다소 벅찰 수 있다.&lt;/p&gt;
&lt;p&gt;이 블로그 글에서는 &lt;code&gt;docker run&lt;/code&gt; 명령을 명확히 설명하고, Docker 컨테이너를 효과적으로 실행하기 위해 그 기능을 활용하는 방법을 설명한다. 시작해보자!&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;Docker Run 명령어&lt;/h2&gt;
&lt;p&gt;가장 기본적으로 &lt;code&gt;docker run&lt;/code&gt; 명령은 Docker 이미지에서 새 컨테이너를 생성하고 시작한다. 그러나 이 명령은 애플리케이션 요구사항에 따라 컨테이너를 커스터마이즈할 수 있는 다양한 옵션을 제공한다. 명령 구조는 다음과 같다:&lt;/p&gt;</description></item><item><title>MySQL 8: 오류 1819 이해하고 수정하기</title><link>https://ercan.cloud/ko/mysql-8-understanding-and-fixing-error-1819/</link><pubDate>Fri, 14 Jul 2023 15:25:56 +0300</pubDate><guid>https://ercan.cloud/ko/mysql-8-understanding-and-fixing-error-1819/</guid><description>&lt;p&gt;MySQL 초보자로서 "ERROR 1819 (HY000): Your password does not satisfy the current policy requirements"라는 오류 메시지를 마주할 수 있다. 이 오류는 버그가 아니라 사용자가 강력한 비밀번호를 설정하도록 보장하는 MySQL의 내장 보안 기능이다. 이 튜토리얼은 이 오류를 이해하고 수정하는 방법을 안내한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;오류를 유발하는 원인&lt;/h2&gt;
&lt;p&gt;MySQL root 사용자의 비밀번호를 설정할 때 VALIDATE PASSWORD 구성 요소를 활성화하라는 메시지가 표시될 수 있다. 활성화되면 이 구성 요소는 제공된 비밀번호의 강도를 확인한다. 비밀번호가 약하다고 간주되면 오류 1819가 발생한다.&lt;/p&gt;</description></item><item><title>GitHub Clone Helper와 함께하는 Ctrl+C와 Ctrl+V 파티!</title><link>https://ercan.cloud/ko/ctrlc-and-ctrlv-party-with-github-clone-helper/</link><pubDate>Sat, 24 Jun 2023 23:53:09 +0300</pubDate><guid>https://ercan.cloud/ko/ctrlc-and-ctrlv-party-with-github-clone-helper/</guid><description>&lt;p&gt;안녕하세요, 키보드 전사와 터미널 위스퍼러 여러분!&lt;/p&gt;
&lt;p&gt;GitHub의 무한한 리포지토리 바다에서 길을 잃고 여러 개를 클론해야 했던 적이 있는가? 우리 모두 그 과정을 안다: 클론 URL을 복사하고, 터미널을 열고, 'git clone'을 입력하고, URL을 붙여넣고, Enter를 누른다. 쉽게 들리는가? 그렇다면 50번째는? 100번째는? 1000번째는?! 생각만 해도 손가락에 쥐가 난다!&lt;/p&gt;
&lt;p&gt;우리 모두 좋은 타이핑 세션을 좋아하지만(리듬감 있는 클릭-클랙 소리는 이상하게 만족스럽다), 매번 모든 URL 앞에 'git clone'을 입력하는 것은? 바로 거기서 선을 긋는다. 모든 명령 앞에 "Simon says"라고 말해야 하는 것과 같다. Simon, 네가 책임자라는 건 알겠어!&lt;/p&gt;</description></item><item><title>미스터리 공개: Linux에서 IP 주소 조회 방법 해독하기</title><link>https://ercan.cloud/ko/unveiling-the-mystery-decoding-ip-address-retrieval-in-linux/</link><pubDate>Thu, 11 May 2023 12:10:57 +0300</pubDate><guid>https://ercan.cloud/ko/unveiling-the-mystery-decoding-ip-address-retrieval-in-linux/</guid><description>&lt;p&gt;Linux에서 IP 주소를 조회하는 방법을 이해하는 것은 특히 초보자에게 약간 까다로울 수 있다. 좋은 소식은? 보기보다 복잡하지 않다는 것이다! 단순화해보자.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;&lt;code&gt;ifconfig&lt;/code&gt; 명령 이해하기&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ifconfig&lt;/code&gt;는 Linux에서 네트워크 인터페이스를 구성하는 데 사용되는 가장 오래된 도구 중 하나다.&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;export LOCAL_IP=$(ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}')
echo $LOCAL_IP&lt;/code&gt;&lt;/pre&gt;
&lt;h2 class="wp-block-heading"&gt;&lt;code&gt;ip&lt;/code&gt; 명령 탐색하기&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ip&lt;/code&gt; 명령은 &lt;code&gt;ifconfig&lt;/code&gt;를 대체하기 위한 더 새로운 도구다. 더 광범위한 기능을 제공하며 현재 많은 Linux 배포판에서 네트워크 관리를 위한 기본 명령이다.&lt;/p&gt;</description></item><item><title>AWS Well-Architected Framework: 클라우드 성공의 열쇠</title><link>https://ercan.cloud/ko/the-aws-well-architected-framework-a-key-to-cloud-success/</link><pubDate>Wed, 26 Apr 2023 00:42:29 +0300</pubDate><guid>https://ercan.cloud/ko/the-aws-well-architected-framework-a-key-to-cloud-success/</guid><description>&lt;p&gt;클라우드는 비즈니스 운영 방식을 혁신했으며, Amazon Web Services(AWS)는 클라우드 컴퓨팅에서 지속적으로 선두를 달려왔다. 기업이 클라우드에서 안정적이고 효율적이며 안전한 애플리케이션을 구축하고 유지할 수 있도록 돕기 위해 AWS는 Well-Architected Framework를 도입했다. 이 블로그 글에서는 이 프레임워크의 중요성, 왜 사용해야 하는지, 그리고 클라우드 여정에서 어떤 핵심 역할을 하는지 살펴본다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;AWS Well-Architected Framework란 무엇인가?&lt;/h2&gt;
&lt;p&gt;AWS Well-Architected Framework는 AWS 클라우드에서 고성능, 복원력, 그리고 안전한 애플리케이션을 구축하고 유지하기 위한 모범 사례, 설계 원칙, 아키텍처 권장 사항의 집합이다.&lt;/p&gt;</description></item><item><title>Telnet 영화 - 인터넷 영화 스트리밍의 여명기에 대한 향수 어린 시선</title><link>https://ercan.cloud/ko/telnet-movies-a-nostalgic-look-at-the-dawn-of-internet-movie-streaming/</link><pubDate>Mon, 24 Apr 2023 22:07:02 +0300</pubDate><guid>https://ercan.cloud/ko/telnet-movies-a-nostalgic-look-at-the-dawn-of-internet-movie-streaming/</guid><description>&lt;p&gt;Netflix, Hulu, Amazon Prime Video가 콘텐츠 소비 방식을 변혁하기 훨씬 이전에 온라인으로 영화를 보는 매혹적이고 덜 알려진 방법이 있었다: Telnet 영화다. Telnet 프로토콜을 통해 전송된 이러한 텍스트 기반 영화는 인터넷 스트리밍 진화의 디딤돌이었다. 이 블로그 글에서는 Telnet 영화의 역사, 발명가, 개념의 동기, 그리고 관련된 첫 번째 포럼 게시물이나 이메일을 깊이 탐구한다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;역사&lt;/h2&gt;
&lt;p&gt;Telnet은 "Teletype Network"의 약자로, 원격 컴퓨터 간 통신에 사용되는 애플리케이션 프로토콜이다. 1969년 현대 인터넷의 전신인 ARPANET(Advanced Research Projects Agency Network)의 일부로 개발되었다.&lt;/p&gt;</description></item><item><title>AWS Lambda로 메타데이터를 제거하여 미디어 파일 보호하기</title><link>https://ercan.cloud/ko/secure-your-media-files-by-removing-metadata-with-aws-lambda/</link><pubDate>Thu, 20 Apr 2023 15:36:52 +0300</pubDate><guid>https://ercan.cloud/ko/secure-your-media-files-by-removing-metadata-with-aws-lambda/</guid><description>&lt;p&gt;오늘날의 디지털 세상에서 이미지와 비디오는 종종 미디어 파일에 대한 놀라운 양의 정보를 드러내는 메타데이터를 포함하고 있다. 이미지의 EXIF 데이터와 같은 이 메타데이터는 위치, 기기 정보 등과 같은 민감한 세부 정보를 포함할 수 있다. 사용자 개인정보를 보호하고 보안을 강화하기 위해 다양한 산업의 비즈니스는 미디어 파일에서 이 메타데이터를 제거함으로써 이점을 얻을 수 있다. 이 블로그 글에서는 S3 버킷에 업로드된 이미지와 비디오에서 메타데이터를 자동으로 제거하는 간단한 AWS Lambda 스크립트를 안내한다.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;이점을 얻을 수 있는 산업:&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Nginx에서의 CORS: 향상된 보안을 위한 구성 가이드</title><link>https://ercan.cloud/ko/cors-in-nginx-configuration-guide-for-enhanced-security/</link><pubDate>Wed, 19 Apr 2023 21:21:10 +0300</pubDate><guid>https://ercan.cloud/ko/cors-in-nginx-configuration-guide-for-enhanced-security/</guid><description>&lt;p&gt;Cross-Origin Resource Sharing(CORS)은 웹 서버와 브라우저 간의 안전한 통신을 가능하게 하는 중요한 메커니즘이다. CORS는 웹 애플리케이션이 다른 도메인에서 리소스를 요청할 수 있는 방법을 제공함으로써, 웹 애플리케이션이 애플리케이션을 제공하는 도메인과 다른 도메인의 데이터에 접근하는 것을 제한하는 Same-Origin Policy(SOP)의 한계를 극복하도록 돕는다.&lt;/p&gt;
&lt;p&gt;이 블로그 글에서는 CORS의 중요성, 작동 방식, 그리고 다양한 시나리오에서 Nginx에 CORS를 구성하는 방법을 살펴본다. 또한 allow-origin, allow-methods, allow-headers, expose-headers와 같은 주요 CORS 개념도 깊이 파헤친다.&lt;/p&gt;
&lt;h2 class="wp-block-heading"&gt;CORS의 중요성&lt;/h2&gt;
&lt;p&gt;CORS는 서로 다른 도메인의 서버와 클라이언트 간 통신을 가능하게 하므로 현대 웹 애플리케이션에 필수적이다. 이를 통해 애플리케이션은 사용자 데이터의 무결성을 유지하면서 다양한 도메인에서 호스팅되는 데이터와 서비스에 안전하게 접근할 수 있다.&lt;/p&gt;</description></item><item><title>S3 Directory Listing으로 S3 버킷 객체 쉽게 나열하기</title><link>https://ercan.cloud/ko/list-your-s3-bucket-objects-easily-with-s3-directory-listing/</link><pubDate>Tue, 18 Apr 2023 15:35:21 +0300</pubDate><guid>https://ercan.cloud/ko/list-your-s3-bucket-objects-easily-with-s3-directory-listing/</guid><description>&lt;p&gt;지루하고 평범한 S3 버킷 디렉토리 목록에 지쳤는가? 더 사용자 친화적이고 매력적으로 만들 방법이 있었으면 하는가? 더 이상 찾을 필요 없다! S3-Directory-Listing을 소개한다. S3 버킷 디렉토리 목록을 멋지고 현대적인 UI와 검색 기능을 갖춘 파일 및 폴더 목록으로 바꿔주는 간단하고 사용하기 쉬운 JS 스크립트와 HTML 조합이다.&lt;/p&gt;
&lt;p&gt;사용 방법은 간단하다. 리포지토리를 클론하거나 &lt;code&gt;dark-mode.css&lt;/code&gt;, &lt;code&gt;s3.js&lt;/code&gt;, &lt;code&gt;index.html&lt;/code&gt;의 내용을 S3 버킷에 복사한다. 그런 다음 &lt;code&gt;app.js&lt;/code&gt;의 &lt;code&gt;bucketName&lt;/code&gt; 변수를 버킷 이름으로 업데이트하고 S3 버킷 설정을 구성한다. 브라우저에서 &lt;code&gt;index.html&lt;/code&gt; 파일에 접근하면, 짜잔! 이제 멋진 S3 디렉토리 목록을 갖게 된다.&lt;/p&gt;</description></item><item><title>Composer Guardian으로 Composer 패키지 최신 상태 유지하기: 왜 필수적인가</title><link>https://ercan.cloud/ko/keeping-composer-packages-up-to-date-with-composer-guardian-why-its-essential/</link><pubDate>Sat, 15 Apr 2023 19:09:12 +0300</pubDate><guid>https://ercan.cloud/ko/keeping-composer-packages-up-to-date-with-composer-guardian-why-its-essential/</guid><description>&lt;p&gt;PHP 개발자로서 PHP의 의존성 관리자인 Composer에 이미 익숙할 것이다. 이는 패키지 관리, 업데이트 간소화, 프로젝트의 원활한 실행을 보장하는 필수 도구다. Composer 사용의 중요한 측면 중 하나는 패키지를 최신 상태로 유지하는 것이다. 이 블로그 글에서는 Composer 패키지를 최신 상태로 유지하는 것의 중요성과, 오픈소스 스크립트인 &lt;a href="https://github.com/flightlesstux/Composer-Guardian"&gt;Composer Guardian&lt;/a&gt;이 어떻게 이를 도와줄 수 있는지 논의한다.&lt;/p&gt;
&lt;p&gt;Composer 패키지를 최신 상태로 유지해야 하는 이유:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;보안: 오래된 패키지는 새 버전에서 해결된 취약점을 포함할 수 있어 애플리케이션을 보안 위험에 노출시킬 수 있다.&lt;/li&gt;
&lt;li&gt;성능: 새 버전의 패키지는 종종 성능 개선과 최적화를 포함하여 더 빠르고 효율적인 애플리케이션을 만든다.&lt;/li&gt;
&lt;li&gt;호환성: PHP와 다른 패키지가 발전함에 따라 호환성 이슈가 발생할 수 있다.&lt;/li&gt;
&lt;li&gt;버그 수정: 패키지 업데이트는 종종 애플리케이션에서 겪을 수 있는 문제를 해결하는 버그 수정을 포함한다.&lt;/li&gt;
&lt;li&gt;새로운 기능: 업데이트된 패키지는 애플리케이션에 도움이 될 수 있는 새로운 기능을 도입한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href="https://github.com/flightlesstux/Composer-Guardian"&gt;Composer Guardian&lt;/a&gt; 소개&lt;/p&gt;</description></item><item><title>AWS의 Carrier Gateway란 무엇인가?</title><link>https://ercan.cloud/ko/what-is-carrier-gateway-on-aws/</link><pubDate>Fri, 24 Feb 2023 20:19:15 +0300</pubDate><guid>https://ercan.cloud/ko/what-is-carrier-gateway-on-aws/</guid><description>&lt;p&gt;Amazon Web Services(AWS)는 사용자에게 원활하고 안전한 클라우드 컴퓨팅 경험을 제공하기 위해 많은 서비스를 제공한다. 그 중 하나인 Carrier Gateway는 고객 네트워크를 AWS에 연결하기 위한 간소화되고 중앙 집중식 솔루션을 제공하도록 설계되었다.&lt;/p&gt;
&lt;h2&gt;AWS의 Carrier Gateway란 무엇인가?&lt;/h2&gt;
&lt;p&gt;Carrier Gateway는 AWS 고객이 온프레미스 데이터 센터 또는 네트워크와 AWS의 Virtual Private Cloud(VPC) 간에 직접적이고 비공개적인 연결을 설정할 수 있게 해주는 서비스다. 사용자가 네트워크 토폴로지를 AWS로 확장할 수 있게 하여, 온프레미스 인프라와 AWS 간의 안전하고 높은 대역폭 연결을 제공한다.&lt;/p&gt;</description></item><item><title>Terraform으로 AWS EC2 인스턴스 보안 접근을 위한 SSH 키 생성하기</title><link>https://ercan.cloud/ko/creating-ssh-keys-for-secure-access-to-aws-ec2-instances-with-terraform/</link><pubDate>Wed, 15 Feb 2023 09:11:24 +0300</pubDate><guid>https://ercan.cloud/ko/creating-ssh-keys-for-secure-access-to-aws-ec2-instances-with-terraform/</guid><description>&lt;p&gt;클라우드 인프라를 다룰 때 보안은 가장 중요하다. 보안의 중요한 측면 중 하나는 클라우드 리소스에 대한 접근을 제어하는 것이며, 이는 AWS EC2 인스턴스를 다룰 때 특히 중요하다. SSH 키는 EC2 인스턴스에 대한 접근을 보호하는 한 가지 방법이며, Terraform을 사용하면 이러한 키를 쉽게 생성하고 관리할 수 있다.&lt;/p&gt;
&lt;p&gt;SSH 키는 EC2 인스턴스에 대한 안전한 접근을 위해 사용되며, 공개 키와 비공개 키의 두 부분으로 구성된다. 공개 키는 EC2 인스턴스에 업로드되고, 비공개 키는 인스턴스 인증에 사용된다. 비공개 키는 안전하게 보관해야 하며 누구와도 공유해서는 안 된다.&lt;/p&gt;</description></item><item><title>AWS의 Egress-Only Internet Gateway란 무엇인가?</title><link>https://ercan.cloud/ko/what-is-an-egress-only-internet-gateways-in-aws/</link><pubDate>Tue, 31 Jan 2023 06:48:25 +0300</pubDate><guid>https://ercan.cloud/ko/what-is-an-egress-only-internet-gateways-in-aws/</guid><description>&lt;p&gt;Amazon Web Services(AWS)는 모든 규모의 비즈니스에 다양한 인프라 서비스를 제공하는 선도적인 클라우드 컴퓨팅 플랫폼 중 하나다. AWS의 필수 구성 요소 중 하나는 Virtual Private Cloud(VPC)로, 사용자가 논리적으로 격리된 가상 네트워크에서 리소스를 격리할 수 있게 해준다. VPC 내에서 Egress-Only Internet Gateway는 VPC에서 인터넷으로의 아웃바운드 트래픽을 가능하게 하는 필수 구성 요소다.&lt;/p&gt;
&lt;p&gt;Egress-Only Internet Gateway는 수평 확장되고 중복되며 고가용성의 VPC 구성 요소로, VPC의 인스턴스에서 인터넷으로의 아웃바운드 전용 트래픽에 대한 안전한 방법을 제공한다. Stateful Gateway로 작동하며, VPC의 인스턴스에서 시작된 네트워크 연결을 추적하고 해당 반환 트래픽이 VPC로 다시 흐르도록 자동으로 허용한다.&lt;/p&gt;</description></item><item><title>AWS의 Internet Gateway란 무엇인가?</title><link>https://ercan.cloud/ko/what-is-an-internet-gateway-in-aws/</link><pubDate>Wed, 11 Jan 2023 14:50:24 +0300</pubDate><guid>https://ercan.cloud/ko/what-is-an-internet-gateway-in-aws/</guid><description>&lt;p&gt;AWS(Amazon Web Services) Internet Gateway는 수평 확장 가능하고 중복되며 고가용성의 VPC 구성 요소로, VPC의 인스턴스와 인터넷 간 통신을 가능하게 한다. 따라서 VPC와 인터넷 사이의 다리 역할을 한다.&lt;/p&gt;
&lt;p&gt;Internet Gateway는 VPC를 생성할 때 자동으로 생성되지 않는다. 대신 VPC의 인스턴스가 인터넷과 통신하기 전에 Internet Gateway를 생성하여 VPC에 연결해야 한다.&lt;/p&gt;
&lt;p&gt;Internet Gateway는 수평 확장이 가능하여 통과하는 요청 수를 처리하기 위해 용량을 자동으로 조정한다. 또한 중복되어 있어 하나의 Internet Gateway가 실패하면 다른 하나가 대신하여 서비스 중단이 없도록 보장한다.&lt;/p&gt;</description></item><item><title>AWS VPC의 Route Table이란 무엇인가?</title><link>https://ercan.cloud/ko/what-are-route-tables-on-aws-vpc/</link><pubDate>Tue, 03 Jan 2023 09:03:38 +0300</pubDate><guid>https://ercan.cloud/ko/what-are-route-tables-on-aws-vpc/</guid><description>&lt;p&gt;AWS(Amazon Web Services)의 Route Table은 Virtual Private Cloud(VPC) 내에서 트래픽이 어떻게 전달되는지 결정하는 데 사용된다. 여기에는 어떤 네트워크 트래픽이 어떤 네트워크 인터페이스로 전달되는지 지정하는 일련의 규칙인 라우트(route)가 포함되어 있다.&lt;/p&gt;
&lt;p&gt;VPC의 각 서브넷은 Route Table과 연결되어야 하며, 해당 서브넷의 트래픽을 제어한다. 서브넷은 한 번에 하나의 Route Table에만 연결될 수 있지만, 하나의 Route Table은 여러 서브넷에 연결될 수 있다.&lt;/p&gt;
&lt;p&gt;Route Table에는 두 가지 유형의 라우트가 있다:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Local Route: VPC 내의 트래픽에 적용된다. 모든 VPC에는 서브넷 간 트래픽 흐름을 허용하는 기본 Local Route가 있다.&lt;/li&gt;
&lt;li&gt;Internet Gateway Route: 인터넷으로 오가는 트래픽에 적용된다. 모든 VPC에는 VPC와 인터넷 간 트래픽 흐름을 허용하는 기본 Internet Gateway Route가 있다.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;결론&lt;/h2&gt;
&lt;p&gt;요약하자면, AWS의 Route Table은 VPC 내에서 트래픽 라우팅을 제어하는 데 사용된다. Route Table을 올바르게 구성하는 것은 VPC 내에서 트래픽이 올바르게 전달되고 애플리케이션의 성능을 유지하는 데 중요하다.&lt;/p&gt;</description></item><item><title>AWS VPC의 Subnet이란 무엇인가?</title><link>https://ercan.cloud/ko/what-is-subnet-on-aws-vpc/</link><pubDate>Sat, 10 Dec 2022 09:05:25 +0300</pubDate><guid>https://ercan.cloud/ko/what-is-subnet-on-aws-vpc/</guid><description>&lt;p&gt;Amazon Web Services(AWS) Virtual Private Cloud(VPC)는 사용자가 클라우드에서 자신만의 가상 네트워크를 생성하고 관리할 수 있게 해주는 클라우드 컴퓨팅 서비스다. 이를 통해 사용자는 VPC의 서브넷을 커스터마이즈하는 기능을 포함하여 네트워크와 리소스를 완전히 제어할 수 있다.&lt;/p&gt;
&lt;p&gt;AWS VPC의 Subnet은 VPC를 여러 논리적 네트워크로 분할하는 데 사용된다. 이를 통해 사용자는 리소스를 격리하고 해당 리소스에 대한 접근을 제어할 수 있다. Subnet은 퍼블릭 또는 프라이빗이 될 수 있으며, 퍼블릭 서브넷은 인터넷에 접근할 수 있고 프라이빗 서브넷은 인터넷에 접근할 수 없다.&lt;/p&gt;</description></item><item><title>AWS VPC란 무엇인가?</title><link>https://ercan.cloud/ko/what-is-aws-vpc/</link><pubDate>Wed, 07 Dec 2022 05:56:09 +0300</pubDate><guid>https://ercan.cloud/ko/what-is-aws-vpc/</guid><description>&lt;h2&gt;AWS VPC란 무엇인가?&lt;/h2&gt;
&lt;p&gt;Amazon Web Services(AWS) Virtual Private Cloud(VPC)는 사용자가 AWS 클라우드에서 자신만의 가상 프라이빗 네트워크(VPN)를 생성하고 관리할 수 있게 해주는 서비스다. 이를 통해 사용자는 자신만의 IP 주소 범위 선택, 서브넷 생성, 라우트 테이블 및 네트워크 게이트웨이 구성 등 네트워크 환경을 완전히 제어할 수 있다.&lt;/p&gt;
&lt;p&gt;VPC 사용의 주요 이점 중 하나는 인터넷과 다른 AWS 서비스에 안전하게 연결할 수 있는 능력이다. VPC를 통해 사용자는 웹 서버를 위한 퍼블릭 서브넷과 데이터베이스를 위한 프라이빗 서브넷을 생성할 수 있어 민감한 데이터의 더 나은 보안과 격리가 가능하다.&lt;/p&gt;</description></item><item><title>nginx가 프록시용 DNS를 캐싱하지 않도록 방지하기</title><link>https://ercan.cloud/ko/prevent-nginx-from-caching-dns-for-proxy/</link><pubDate>Mon, 22 Aug 2022 12:17:44 +0300</pubDate><guid>https://ercan.cloud/ko/prevent-nginx-from-caching-dns-for-proxy/</guid><description>&lt;p&gt;안녕하세요,&lt;br&gt;&lt;br&gt;nginx를 프록시 및/또는 리버스 프록시로 사용 중이라면, nginx가 DNS 정보를 캐싱하고 있다. nginx 뒤에 AWS Application Load Balancer를 사용하는 경우, AWS는 항상 CNAME을 제공하고 Load Balancer IP 주소를 자주 변경하기 때문에 nginx는 때때로 AWS Application Load Balancer로 요청을 보내기 위해 재시작 및/또는 DNS 플러싱이 필요하다.&lt;/p&gt;
&lt;p&gt;nginx에서 DNS를 플러시하는 옵션은 없으며, 유일한 옵션은 nginx를 재시작하는 것이다. 하지만 항상 재시작으로 문제를 해결할 수는 없다 : ) 아래의 nginx 설정을 사용하여 이 DNS 캐싱 문제를 해결할 수 있다.&lt;/p&gt;</description></item><item><title>AWS에서 PHP 애플리케이션 확장하기</title><link>https://ercan.cloud/ko/scaling-php-applications-on-aws/</link><pubDate>Wed, 10 Aug 2022 05:18:09 +0300</pubDate><guid>https://ercan.cloud/ko/scaling-php-applications-on-aws/</guid><description>&lt;p&gt;AWS에서 고가용성, 고성능, 안전한 PHP 애플리케이션을 실행하는 방법을 이해할 수 있다.&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Amazon Route 53이 DNS(Domain Name Service)를 해석하여 최종 사용자 요청을 라우팅한다.&lt;/li&gt;&lt;li&gt;Amazon CloudFront가 글로벌 Points of Presence를 활용하여 콘텐츠를 캐싱하고 전송을 가속화한다. CloudFront는 SSL 종료도 처리하며, 자동으로 SSL 인증서를 생성하고 갱신하는 Amazon Certificate Manager와 통합된다.&lt;/li&gt;&lt;li&gt;AWS Web Application Firewall이 CloudFront 및 Application Load Balancer와 통합되어 OWASP 상위 10개 애플리케이션 취약점을 완화한다.&lt;/li&gt;&lt;li&gt;Application Load Balancer가 HTTP/S 요청을 Private Subnet에서 실행 중인 EC2 인스턴스로 라우팅한다.&lt;/li&gt;&lt;li&gt;Amazon Linux 2 AMI에 PHP 및 AWS SDK for PHP와 같은 기타 필수 바이너리가 포함되어 있다.&lt;/li&gt;&lt;li&gt;Amazon Linux 2 AMI에 설치된 Amazon CloudWatch Agent가 애플리케이션 로그, 추가 호스트 수준 메트릭, 커스텀 비즈니스 메트릭을 스트리밍한다.&lt;/li&gt;&lt;li&gt;Amazon EC2 Auto Scaling이 CPU 및 메모리와 같은 메트릭을 기반으로 인스턴스 시작을 관리한다. 비용 최적화를 위해 Amazon Graviton 인스턴스를 사용한다.&lt;/li&gt;&lt;li&gt;Systems Manager Session Manager를 사용하여 AWS Console의 웹 기반 세션으로 EC2 인스턴스에 연결한다. 키 페어나 열린 SSH 포트가 필요 없다.&lt;/li&gt;&lt;li&gt;데이터베이스 자격 증명이 AWS Secrets Manager에 안전하게 저장된다. AWS SDK for PHP를 사용하여 애플리케이션 코드가 IAM Role을 통해 Secrets Manager에 저장된 자격 증명을 조회한다.&lt;/li&gt;&lt;li&gt;애플리케이션 코드가 친숙한 Git CLI를 사용하여 AWS CodeCommit에 안전하게 저장된다.&lt;/li&gt;&lt;li&gt;AWS CodePipeline이 CI/CD를 구현하며, 새 EC2 인스턴스가 시작될 때 트리거되는 AWS CodeDeploy 후크를 사용하여 코드 배포를 오케스트레이션한다.&lt;/li&gt;&lt;li&gt;Amazon ElastiCache for Redis가 세션 데이터를 캐싱한다.&lt;/li&gt;&lt;li&gt;Amazon Aurora Multi-AZ가 고가용성을 가능하게 한다. 장애 발생 시 자동으로 페일오버를 처리하는 DNS 엔드포인트를 통해 애플리케이션이 연결된다. Aurora Reader 엔드포인트가 읽기 작업을 처리하여 Aurora Writer 인스턴스의 부하를 경감한다.&lt;/li&gt;&lt;li&gt;Amazon Elastic File System(Amazon EFS)이 Auto Scaling 그룹과 웹 콘텐츠를 저장하고 공유한다.&lt;/li&gt;&lt;/ol&gt;</description></item><item><title>CLI를 통해 S3 버킷 생성 및 정책 설정하기</title><link>https://ercan.cloud/ko/create-an-s3-bucket-and-set-a-policy-via-cli/</link><pubDate>Sun, 17 Jul 2022 12:09:37 +0300</pubDate><guid>https://ercan.cloud/ko/create-an-s3-bucket-and-set-a-policy-via-cli/</guid><description>&lt;p&gt;CLI 명령어를 사용하는 것을 정말 좋아하며, 이는 내 일상이다. 오늘은 CLI를 통해 "AWS에서 S3 버킷을 어떻게 생성하는지" 그리고 "S3 버킷 정책을 어떻게 설정하는지"를 설명한다. 시작하자...&lt;/p&gt;
&lt;p&gt;먼저 AWS_ACCESS_KEY와 AWS_SECRET_ACCESS_KEY를 설정해야 한다. 즉, &lt;code&gt;aws configure&lt;/code&gt; 명령을 미리 실행해야 한다는 의미다. 이 작업을 완료했다면 계속 진행할 수 있다.&lt;/p&gt;
&lt;h2&gt;먼저 S3 버킷 확인하기&lt;/h2&gt;
&lt;p&gt;우선 어떤 버킷이 있는지 확인해야 한다. &lt;code&gt;aws s3 ls&lt;/code&gt; 명령을 실행하면 기존 버킷이 반환된다.&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;~ aws s3 ls
2021-04-26 11:01:32 ercanermis
2021-05-20 19:14:04 ercanermis-aws-ssm-logs
2021-04-26 11:01:43 ercanermis-com
2021-04-26 11:02:08 www-ercanermis-com&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;S3 버킷 생성하기&lt;/h2&gt;
&lt;p&gt;S3 버킷 생성 명령도 간단하고 쉽다. &lt;code&gt;aws s3 mb&lt;/code&gt;다. 실행하고 버킷을 다시 나열해보자.&lt;/p&gt;</description></item><item><title>AWS Route53으로 Let's Encrypt SSL 발급하기</title><link>https://ercan.cloud/ko/issue-a-lets-encrypt-ssl-with-the-aws-route53/</link><pubDate>Sat, 16 Jul 2022 04:47:34 +0300</pubDate><guid>https://ercan.cloud/ko/issue-a-lets-encrypt-ssl-with-the-aws-route53/</guid><description>&lt;p&gt;안녕하세요,&lt;br&gt;&lt;br&gt;이 글에서는 AWS Route53 서비스로 Let's Encrypt SSL을 발급하는 방법을 설명한다. 함께 배워보자.&lt;/p&gt;
&lt;h2&gt;Let's Encrypt란 무엇인가?&lt;/h2&gt;
&lt;p&gt;Let's Encrypt는 Internet Security Research Group(ISRG)이 운영하는 비영리 인증 기관으로, Transport Layer Security 암호화를 위한 X.509 인증서를 무료로 제공한다. 즉, 프로젝트/앱을 위한 무료 SSL 인증서를 받을 수 있으며 SSL 인증서는 90일 동안 유효하다. 자동 갱신을 위한 자동화가 필요하다.&lt;/p&gt;
&lt;h2&gt;AWS Route53이란 무엇인가?&lt;/h2&gt;
&lt;p&gt;Amazon Route 53은 확장 가능하고 고가용성의 Domain Name System 서비스다. 2010년 12월 5일에 출시되었으며, Amazon.com의 클라우드 컴퓨팅 플랫폼인 Amazon Web Services의 일부다. 새 도메인을 등록하거나 기존 도메인을 이전하거나 도메인의 DNS 관리 시스템만 사용할 수 있다.&lt;/p&gt;</description></item><item><title>AWS Application Load Balancer에서 Let's Encrypt SSL 자동화하기</title><link>https://ercan.cloud/ko/automate-lets-encrypt-ssl-on-aws-application-load-balancer/</link><pubDate>Sat, 02 Jul 2022 18:09:07 +0300</pubDate><guid>https://ercan.cloud/ko/automate-lets-encrypt-ssl-on-aws-application-load-balancer/</guid><description>&lt;p&gt;대부분의 경우 AWS Certificate Manager(ACM) 외에는 아무것도 필요하지 않지만, 고객의 도메인을 ALB로 호스팅하면서 고객으로부터 SSL 인증서를 받을 수 없는 경우에는 우회 방법이 필요하다. 이 글에서는 AWS Application Load Balancer에서 Let's Encrypt SSL을 발급하고 자동화하는 방법을 다룬다!&lt;/p&gt;
&lt;p&gt;Let's Encrypt에 SSL 인증서를 요청하면, LE는 web-challenge, route53 등과 같은 몇 가지 검증 방법을 사용한다. 이 시나리오에서는 도메인의 DNS 관리 권한이 나에게 없기 때문에 web-challenge를 사용하기로 결정했다. 나는 애플리케이션만 호스팅하고 SSL을 발급해야 한다.&lt;/p&gt;
&lt;p&gt;web-challenge로 SSL을 요청하면, Let's Encrypt는 &lt;code&gt;https://domain.com/.well-known/acme-challenge&lt;/code&gt; 경로를 확인하여 검증한다. 이것이 무엇을 의미할까? Let's Encrypt가 포트 80으로 도메인에 요청을 보내 검증을 수행한다는 의미다. Load Balancer 설정을 일부 조정하고 acme-challenge 요청을 특별히 리디렉션하기 위한 또 다른 Target Group이 필요하다.&lt;/p&gt;</description></item><item><title>Bitbucket Pipelines로 S3와 CloudFront에 웹사이트 배포하기</title><link>https://ercan.cloud/ko/deploy-a-website-to-s3-and-cloudfront-with-bitbucket-pipelines/</link><pubDate>Thu, 23 Jun 2022 11:44:00 +0300</pubDate><guid>https://ercan.cloud/ko/deploy-a-website-to-s3-and-cloudfront-with-bitbucket-pipelines/</guid><description>&lt;p&gt;Bitbucket은 Atlassian 제품으로, Jira를 사용하는 협업 팀을 위한 Git 기반 코드 저장 및 CI/CD 최적화 도구다. 코드를 변경하고 Bitbucket에서 개정 및 이력을 유지할 때, 배포를 위한 일부 자동화도 필요하다.&lt;br&gt;&lt;br&gt;CI/CD는 모든 자동화를 위한 것이며, Continuous Integration(지속적 통합)과 Continuous Delivery(지속적 배포)를 의미한다. 이 글에서는 CI와 CD를 동시에 사용한다.&lt;br&gt;&lt;br&gt;"Bitbucket을 어떻게 사용하는가?"는 건너뛰고, 전 세계로의 배포를 위해 CloudFront를 사용하는 AWS S3로의 지속적 배포를 위한 Bitbucket Pipelines에 대해 소개한다.&lt;/p&gt;
&lt;p&gt;정적 호스팅이 지원되는 S3 버킷을 생성하면, 로컬 폴더에서 S3 버킷으로 &lt;code&gt;sync&lt;/code&gt;해야 한다. 일반적으로 로컬 폴더를 S3 버킷과 100% 동기화하기 위해 &lt;code&gt;aws s3 sync LOCAL_FOLDER/ s3://STATIC_HOSTING_ENABLED_BUCKET_NAME --delete&lt;/code&gt; 명령을 실행해야 한다.&lt;/p&gt;</description></item><item><title>지정된 IP로 AWS 계정 보호하기</title><link>https://ercan.cloud/ko/protect-your-aws-account-with-specified-ips/</link><pubDate>Thu, 16 Jun 2022 13:18:15 +0300</pubDate><guid>https://ercan.cloud/ko/protect-your-aws-account-with-specified-ips/</guid><description>&lt;p&gt;보안은 항상 중요하며 클라우드에서 무언가를 하기 전에 가장 먼저 고려해야 할 사항이다. 나는 5년 넘게 IP 제한 정책을 사용해왔으며 이 트릭을 공유하고 싶다. 두 가지 다른 방법이 있다.&lt;br&gt;&lt;br&gt;ISP로부터 Static IP를 받거나 VPN IP 주소를 사용할 수도 있다.&lt;/p&gt;
&lt;h2&gt;IP Policy의 이점은 무엇인가?&lt;/h2&gt;
&lt;p&gt;답은 간단하다. 지정된 IP를 사용하지 않으면 누구도 클라우드의 리소스에 접근할 수 없다.&lt;/p&gt;
&lt;p&gt;다음은 IAM Policy에 지정된 IP 주소 없이 로그인한 사용자의 예시다. 사용자는 로그인할 수 있지만 리소스 및/또는 정보에 대해 아무것도 볼 수 없다.&lt;/p&gt;</description></item><item><title>AWS CLI v1과 v2의 차이점</title><link>https://ercan.cloud/ko/differences-between-aws-cli-v1-and-v2/</link><pubDate>Thu, 09 Jun 2022 23:35:00 +0300</pubDate><guid>https://ercan.cloud/ko/differences-between-aws-cli-v1-and-v2/</guid><description>&lt;p&gt;때때로 v1을 사용 중이라면 aws-cli가 CLI 명령을 실행하지 않을 수 있다. aws cli가 v1이라면 업데이트를 권장한다. 이 글에서는 어떤 상황에서 AWS CLI v2를 사용해야 하는지 배우게 된다.&lt;br&gt;&lt;/p&gt;
&lt;p&gt;AWS CLI v1은 Python 언어로 작성되었으며 v1의 경우 Python을 먼저 설치해야 하지만, v2를 사용하면 내장되어 있어 &lt;strong&gt;Python 인터프리터가 필요하지 않다&lt;/strong&gt;.&lt;/p&gt;
&lt;div class="wp-block-columns"&gt;&lt;div class="wp-block-column" style="flex-basis:100%"&gt;&lt;p&gt;&lt;strong&gt;Auto Prompt&lt;/strong&gt; 기능은 놀랍다! AWS CLI v2는 aws 명령을 실행할 때 명령, 파라미터, 리소스에 대한 프롬프트를 제공할 수 있다.&lt;/p&gt;
&lt;p&gt;설정을 &lt;strong&gt;가져올 수 있다&lt;/strong&gt;! 그렇다, AWS CLI v2는 aws configure import 옵션을 제공하며, AWS Management Console에서 생성된 &lt;code&gt;.csv&lt;/code&gt; 자격 증명을 가져올 수 있다. &lt;code&gt;.csv&lt;/code&gt; 파일은 IAM 사용자 이름과 일치하는 프로필 이름으로 가져온다.&lt;/p&gt;</description></item><item><title>CentOS7 Docker에서의 SSL CA 문제와 해결책</title><link>https://ercan.cloud/ko/ssl-ca-problem-on-centos7-docker-and-solution/</link><pubDate>Tue, 08 Mar 2022 08:19:26 +0300</pubDate><guid>https://ercan.cloud/ko/ssl-ca-problem-on-centos7-docker-and-solution/</guid><description>&lt;p&gt;MacBookPro M1에서 CentOS7 Docker 이미지를 가지고 놀 때, HTTPS 연결이 필요한 서버에 연결되지 않는 것 같았다.&lt;br&gt;&lt;br&gt;예를 들어 &lt;code&gt;yum -y update&lt;/code&gt; 명령을 실행하면 &lt;code&gt;curl: (77) Problem with the SSL CA cert (path? access rights?)&lt;/code&gt;가 반환된다. 흠, 내 ca-certificates는 괜찮기 때문에 OS 버그처럼 보인다.&lt;br&gt;&lt;br&gt;curl을 통해 GET 명령을 보내봤지만 작동하지 않는 것 같았다.&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;$ curl -vvv https://google.com
* About to connect () to google.com port 443 ( # 0) 
* Trying 216.58.212.142 ...
* Connected to github.com (216.58.212.142) port 443 (#0)
* Initializing NSS with certpath: sql: / etc / pki / nssdb
* Closing connection 0 curl: ( 77 ) Problem with the SSL CA cert ( path? Access rights? )&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;온라인에서 조사해보니 실제 버그였다. 자세한 내용은 여기: &lt;a href="https://bugs.centos.org/view.php?id=16282" target="_blank" rel="noreferrer noopener"&gt;https://bugs.centos.org/view.php?id=16282&lt;/a&gt;&lt;/p&gt;</description></item><item><title>내가 가진 것들</title><link>https://ercan.cloud/ko/what-do-i-have/</link><pubDate>Tue, 20 Jul 2021 15:02:36 +0300</pubDate><guid>https://ercan.cloud/ko/what-do-i-have/</guid><description>&lt;p&gt;먼저, 화창한 Izmir에서 인사를 전한다. 오늘은 화요일이지만 휴일 같은 느낌이다. 열정적인 사람들과 함께 일하는 커뮤니티를 위해 기술적인 글을 써야 한다는 것을 알고 있다. 작업 중이다, 약속한다...&lt;/p&gt;
&lt;div class="wp-block-image"&gt;&lt;figure class="aligncenter size-full"&gt;&lt;img src="https://ercan.cloud/uploads/mbp-spacegray-select-202011-geo-tr-2.jpg" alt="" class="wp-image-4725"/&gt;&lt;figcaption&gt;&lt;strong&gt;업무용:&lt;/strong&gt; Apple MacBookPro M1, 16GiG 메모리, 256GB SSD. OS: 항상 최신. 현재 macOS Big Sur 11.4&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class="wp-block-image"&gt;&lt;figure class="aligncenter size-large is-resized"&gt;&lt;img src="https://ercan.cloud/uploads/xps-13-black-standard-1024x737.png" alt="" class="wp-image-4727" width="512" height="369"/&gt;&lt;figcaption&gt;&lt;strong&gt;개인용:&lt;/strong&gt; Dell XPS 13 4K Touch Screen. 8GiG 메모리, 256GB NVMe. OS: Manjaro Linux KDE 최신&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class="wp-block-image"&gt;&lt;figure class="aligncenter size-large is-resized"&gt;&lt;img src="https://ercan.cloud/uploads/71irot2sowl.-ac-sl1500-1024x513-2.jpg" alt="" class="wp-image-4724" width="512" height="257"/&gt;&lt;figcaption&gt;&lt;strong&gt;기타 용도:&lt;/strong&gt; Intel NUC Kit NUC8i7HVK. 32GiG 메모리, 2x512GB RAID 0 NVMe. Windows 10 Enterprise&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class="wp-block-image"&gt;&lt;figure class="aligncenter size-large is-resized"&gt;&lt;img src="https://ercan.cloud/uploads/juniper-srx-110-1024x270.jpg" alt="" class="wp-image-4535" width="768" height="203"/&gt;&lt;figcaption&gt;인터넷 제공업체는 turk.net, VDSL2 기술로 100mbps 다운로드 및 8mbps 업로드 속도. Juniper SRX-110HA v2. 오래되었지만 훌륭하다!&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;div class="wp-block-image"&gt;&lt;figure class="aligncenter size-large is-resized"&gt;&lt;img src="https://ercan.cloud/uploads/mx-keys-and-mx-master-3.jpg" alt="" class="wp-image-4733" width="692" height="277"/&gt;&lt;figcaption&gt;Logitech MX Keys와 MX Master 3로 전환 예정.&lt;/figcaption&gt;&lt;/figure&gt;&lt;/div&gt;
&lt;h2 class="wp-block-heading"&gt;참고 자료&lt;/h2&gt;
&lt;ul class="wp-block-list"&gt;
&lt;li&gt;&lt;a href="https://ark.intel.com/content/www/us/en/ark/products/126143/intel-nuc-kit-nuc8i7hvk.html"&gt;product page&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>공식 AWS Community Builder가 되었다!</title><link>https://ercan.cloud/ko/im-officially-aws-community-builder/</link><pubDate>Sat, 15 May 2021 09:20:41 +0300</pubDate><guid>https://ercan.cloud/ko/im-officially-aws-community-builder/</guid><description>&lt;p&gt;매일 AWS를 사용하고 있다. 나는 스스로를 교육하는 것에 정말 열려 있고, AWS는 그런 면에서 나를 도와준다. 클라이언트 팀, 백엔드 팀, 때로는 데이터 팀 등 부서를 위한 일상적인 작업을 자동화하며, 대부분의 요구사항은 그 조직에 특화되어 있다. 그래서 직접 또는 팀과 함께 구축하고, 진행하면서 제품 및 도구 지식을 향상시켜야 한다.&lt;/p&gt;
&lt;p&gt;지식을 공유하면 사람들의 하루와 시간을 절약할 수 있다. 대부분의 경우 사람들은 같은 것에 막힌다. 문제를 해결했다면 해결책을 공유하지 않을 이유가 무엇인가? 결국 이미 알고 있으니 더 이상 필요하지 않다. 이것이 오픈소스 커뮤니티와 AWS 커뮤니티에 대한 나의 주요 동기다.&lt;/p&gt;</description></item><item><title>Terraform으로 AWS ECS에 HA nginx 배포 및 Geolocation 라우팅</title><link>https://ercan.cloud/ko/deploy-ha-nginx-to-aws-ecs-with-geolocation-routing-via-terraform/</link><pubDate>Wed, 12 May 2021 12:56:20 +0300</pubDate><guid>https://ercan.cloud/ko/deploy-ha-nginx-to-aws-ecs-with-geolocation-routing-via-terraform/</guid><description>&lt;p&gt;오늘은 &lt;strong&gt;&lt;a href="https://ercan.cloud/deploy-nginx-docker-to-aws-ecs-with-terraform-automation/" target="_blank" rel="noreferrer noopener"&gt;Terraform Automation으로 AWS ECS에 nginx Docker 배포하기&lt;/a&gt;&lt;/strong&gt; 프로젝트를 단일 리전에서 멀티 리전 지원으로 리팩토링하고자 한다. 이번에는 모든 Terraform 소스 코드를 내 GitLab 계정에 푸시했다.&lt;br&gt;&lt;br&gt;이제 업데이트된 프로젝트는 아일랜드와 N.Virginia 리전에 모든 인프라를 생성한다.&lt;br&gt;이제 Route53을 통해 제공되는 지리적 위치 기반 라우트 정책을 갖추었다.&lt;/p&gt;
&lt;h2&gt;지리적 위치 기반 라우트 정책이란 무엇인가?&lt;/h2&gt;
&lt;p&gt;이 프로젝트에서는 북미 대륙에서 요청이 오면 방문자의 요청은 North Virginia의 인프라에서 처리된다.&lt;br&gt;&lt;br&gt;유럽 대륙에서 요청이 오면 이번에는 아일랜드의 인프라에서 요청이 처리된다.&lt;br&gt;&lt;br&gt;기본 리전도 설정되어 있으며 아일랜드의 인프라에서 처리된다.&lt;/p&gt;</description></item><item><title>Terraform Automation으로 AWS ECS에 nginx Docker 배포하기</title><link>https://ercan.cloud/ko/deploy-nginx-docker-to-aws-ecs-with-terraform-automation/</link><pubDate>Tue, 11 May 2021 07:40:23 +0300</pubDate><guid>https://ercan.cloud/ko/deploy-nginx-docker-to-aws-ecs-with-terraform-automation/</guid><description>&lt;p&gt;어젯밤 AWS ECS Service를 가지고 놀고 싶었다. 모든 것을 동시에 배포하기 위해 Terraform 코드를 작성했다. 이 Terraform은 다른 VPC에서 ECS를 실행하고 다른 리소스와 격리하기 위한 모든 리소스를 생성한다.&lt;br&gt;&lt;br&gt;이 프로젝트에는 nginx:alpine Docker 이미지를 사용했지만 필요에 따라 Terraform을 수정하거나 변경하여 구현할 수 있다.&lt;/p&gt;
&lt;h2&gt;AWS ECS란 무엇인가?&lt;/h2&gt;
&lt;p&gt;Amazon Elastic Container Service(Amazon ECS)는 완전 관리형 컨테이너 오케스트레이션 서비스다. 고객은 보안성, 신뢰성, 확장성 때문에 가장 민감하고 미션 크리티컬한 애플리케이션을 실행하기 위해 ECS를 사용한다.&lt;/p&gt;
&lt;p&gt;ECS는 여러 이유로 컨테이너 실행을 위한 훌륭한 선택이다. 첫째, 컨테이너를 위한 서버리스 컴퓨트인 &lt;a href="https://aws.amazon.com/fargate/" target="_blank" rel="noreferrer noopener"&gt;AWS Fargate&lt;/a&gt;를 사용하여 ECS 클러스터를 실행할 수 있다. Fargate는 서버를 프로비저닝하고 관리할 필요를 없애고, 애플리케이션별로 리소스를 지정하고 비용을 지불할 수 있게 하며, 설계상 애플리케이션 격리를 통해 보안을 향상시킨다. 둘째, ECS는 Amazon SageMaker, AWS Batch, Amazon Lex, Amazon.com의 추천 엔진과 같은 서비스를 구동하기 위해 Amazon 내에서 광범위하게 사용되며, ECS가 보안, 신뢰성, 가용성에 대해 광범위하게 테스트되도록 보장한다.&lt;/p&gt;</description></item><item><title>Linux 서버에 Node Exporter 설치하는 방법</title><link>https://ercan.cloud/ko/how-to-install-node-exporter-on-linux-server/</link><pubDate>Mon, 10 May 2021 09:18:09 +0300</pubDate><guid>https://ercan.cloud/ko/how-to-install-node-exporter-on-linux-server/</guid><description>&lt;p&gt;Node Exporter는 구성 가능한 메트릭 수집기를 갖춘 서버 수준 및 OS 수준 메트릭을 위한 Prometheus Exporter다. RAM, 디스크 공간, CPU 사용률과 같은 다양한 서버 리소스를 측정하는 데 도움이 된다. Node Exporter는 모니터링을 위한 모든 Linux 서버 관련 메트릭과 통계를 수집하는 좋은 솔루션이다.&lt;/p&gt;
&lt;h2&gt;시작하기 전에&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Prometheus Server&lt;/strong&gt;: Node Exporter 설치 후 메트릭을 Prometheus 서버로 전송해야 한다.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Sudo 권한&lt;/strong&gt;: root로 또는 sudo 권한이 있는 SSH 로그인 사용자로 서버에 접근해야 한다.&lt;/li&gt;&lt;/ul&gt;
&lt;div class="schema-how-to wp-block-yoast-how-to-block"&gt;&lt;p class="schema-how-to-description"&gt;&lt;strong&gt;Node Exporter 설치 단계&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>M1 MacBookPro에서의 FortiClient 문제 해결법</title><link>https://ercan.cloud/ko/forticlient-problem-on-m1-macbookpro-problem-solution/</link><pubDate>Wed, 05 May 2021 06:36:38 +0300</pubDate><guid>https://ercan.cloud/ko/forticlient-problem-on-m1-macbookpro-problem-solution/</guid><description>&lt;p&gt;업무를 수행하고 일부 리소스에 안전하게 접근하기 위해 FortiClient를 통해 VPN에 연결해야 한다. 2021년 3월에 회사에 입사했을 때 M1 MacBookPro를 받았다. M1 MacBookPro는 새로운 CPU 아키텍처를 탑재했기 때문에 다른 제품과 다르다. 이전에 Apple은 Intel 기반 CPU를 사용했지만, 이제 ARM 기반 CPU로 macOS를 실행하기로 결정했고 Apple은 현재 M1이라고 부른다.&lt;br&gt;&lt;br&gt;많은 소프트웨어가 ARM과 호환되지 않는다. 때로는 "이 구성 요소는 귀하의 CPU와 호환되지 않습니다"와 같은 문제가 발생한다.&lt;br&gt;&lt;br&gt;FortiClient v6.4.3.1325를 통해 VPN에 연결했을 때 연결된 것처럼 보이지만 인터넷 속도가 너무 느려졌다. 일반적으로 100MB/sec 인터넷 속도를 가지고 있다. 동료들에게 "VPN 또는 VPN 속도에 문제가 있나요?"라고 물었더니 그들은 "아니오!"라고 답했다. 그들은 Intel 기반 CPU를 사용하는 내 것보다 조금 더 오래된 MacBookPro를 사용하고 있었고, Intel 기반 버전은 괜찮고 안정적이기 때문에 정상적인 상황이라고 생각했다.&lt;/p&gt;</description></item><item><title>Terraform으로 IPSec Site-to-Site VPN을 통해 AWS를 GCP에 연결하기</title><link>https://ercan.cloud/ko/connect-your-aws-to-gcp-with-terraform-via-ipsec-site-to-site-vpn/</link><pubDate>Tue, 04 May 2021 20:49:25 +0300</pubDate><guid>https://ercan.cloud/ko/connect-your-aws-to-gcp-with-terraform-via-ipsec-site-to-site-vpn/</guid><description>&lt;p&gt;오늘은 필요에 따라 또 다른 IaaC(Infrastructure as Code)를 작성했다. Amazon Web Services(AWS)와 Google Cloud Platform(GCP) 간에 안전한 VPN 연결(IPsec)을 생성할 수 있다.&lt;/p&gt;
&lt;h2&gt;이게 무엇을 할 수 있는가?&lt;/h2&gt;
&lt;p&gt;AWS에 Customer Gateway 생성. AWS에 Virtual Private Gateway 생성. AWS에 Site-to-Site VPN Connection 생성. AWS에 VPN 연결 접근을 위한 Security Group 생성. GCP에 VPN 연결용 External IP 주소 생성. GCP에 VPN 연결용 방화벽 규칙 관리. GCP에 Route Rule 생성.&lt;/p&gt;
&lt;h2&gt;요구사항&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt;활성화되지 않은 경우 &lt;a href="https://console.cloud.google.com/marketplace/product/google/compute.googleapis.com"&gt;Compute Engine API 활성화&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;a href="https://console.cloud.google.com/iam-admin/serviceaccounts" target="_blank" rel="noreferrer noopener"&gt;Editor 역할(또는 원하는 역할)의 Service Account 생성&lt;/a&gt; 및 키 파일 내보내기.&lt;/li&gt;&lt;li&gt;Terraform 상태를 보관할 &lt;a href="https://console.cloud.google.com/storage/create-bucket" target="_blank" rel="noreferrer noopener"&gt;Cloud Google Storage Bucket 생성&lt;/a&gt;. 원한다면 서비스 계정을 버킷 멤버로 추가하거나 Terraform 상태를 보관할 S3 Bucket 생성.&lt;/li&gt;&lt;li&gt;AWS 측에서 &lt;a href="https://console.aws.amazon.com/iam/home" target="_blank" rel="noreferrer noopener"&gt;IAM 권한&lt;/a&gt; 확인.&lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;사용법&lt;/h2&gt;
&lt;div class="schema-how-to wp-block-yoast-how-to-block"&gt;&lt;p class="schema-how-to-description"&gt;&lt;/p&gt;</description></item><item><title>Terraform으로 Google Cloud Platform 쉽게 자동화하기</title><link>https://ercan.cloud/ko/google-cloud-platform-automation-with-terraform-easily/</link><pubDate>Fri, 30 Apr 2021 08:51:51 +0300</pubDate><guid>https://ercan.cloud/ko/google-cloud-platform-automation-with-terraform-easily/</guid><description>&lt;p&gt;옛날 옛적에 Google Cloud Platform을 배우던 시절, 워크플로우와 배포를 Terraform으로 자동화하고 싶어서 인프라를 쉽고 빠르게 관리하기 위해 이 IaaC(Infrastructure as a Code)를 작성했다.&lt;/p&gt;
&lt;h2&gt;이게 무엇을 할 수 있는가?&lt;/h2&gt;
&lt;p&gt;SSL이 포함된 안전한 로드 밸런서를 생성하고 HTTP 요청을 301 리디렉션 코드로 HTTPS로 전환한다.&lt;br&gt;인스턴스 템플릿을 생성하고 네트워크, 서브넷, 시작 스크립트에 관한 모든 것을 설정한다.&lt;br&gt;인스턴스 그룹을 생성하고 관리한다. 인스턴스 그룹의 CPU가 특정 값보다 높거나 낮으면, 인스턴스 그룹 관리자가 자동으로 VM을 확장하거나 축소한다.&lt;br&gt;VM 인스턴스는 Private IP로 실행되며, 프로젝트 전체 SSH 접근은 기본적으로 허용되지 않는다. 로드 밸런서 상태 확인을 위한 방화벽 규칙을 관리한다.&lt;/p&gt;</description></item><item><title>Amazon Web Services 계정을 안전하게 보호하는 방법</title><link>https://ercan.cloud/ko/how-to-secure-your-amazon-web-services-account/</link><pubDate>Sat, 24 Apr 2021 14:27:03 +0300</pubDate><guid>https://ercan.cloud/ko/how-to-secure-your-amazon-web-services-account/</guid><description>&lt;p&gt;보안이 먼저다, 보안은 매우 중요하기 때문이다! Amazon Web Services 계정을 생성하면 그 계정을 루트라고 부른다. 루트 수준 계정은 클라우드 환경에서 실행 중인 모든 리소스에 대한 전체 접근 권한을 가지며, 리소스 관리를 위해 루트 계정을 사용하지 않을 것을 강력히 권장한다.&lt;/p&gt;
&lt;div class="schema-how-to wp-block-yoast-how-to-block"&gt;&lt;p class="schema-how-to-description"&gt;&lt;strong&gt;AWS 계정을 안전하게 유지하려면 무엇을 해야 하는가?&lt;/strong&gt;&lt;/p&gt; &lt;ol class="schema-how-to-steps"&gt;&lt;li class="schema-how-to-step"&gt;&lt;strong&gt;루트 계정에 Multi Factor Authentication 설정&lt;/strong&gt;: 이전에 2단계 인증 또는 2 Factor Authentication에 대해 들어본 적이 있을 것이다. Amazon 생태계에서는 이 추가 보안 계층을 MFA라고 부른다. 이 계정의 루트 사용자는 Multi-factor Authentication(MFA)이 활성화되어 있지 않다. &lt;a href="https://console.aws.amazon.com/iam/home?#security_credentials$mfa"&gt;MFA 활성화&lt;/a&gt;하여 이 계정의 보안을 향상시켜라.&lt;img alt="" src="https://ercan.cloud/uploads/aws-set-root-mfa.png"/&gt;&lt;/p&gt;</description></item><item><title>macOS에 UGREEN USB Ethernet Adapter 설치하기</title><link>https://ercan.cloud/ko/install-ugreen-usb-ethernet-adapter-on-macos/</link><pubDate>Sun, 18 Apr 2021 14:39:34 +0300</pubDate><guid>https://ercan.cloud/ko/install-ugreen-usb-ethernet-adapter-on-macos/</guid><description>&lt;p&gt;2019년, Dell XPS13을 이더넷 케이블로 Juniper SRX-110에 연결해야 했지만 Dell에는 이더넷 포트가 없었다. Amazon에서 UGREEN USB Ethernet Adapter를 구매하기로 결정했다.&lt;br&gt;&lt;br&gt;이 이더넷 어댑터는 드라이버가 필요 없으며 Windows와 Linux에서 완벽하게 작동한다. 오늘 Apple MacBookPro Silicon을 동일한 USB 어댑터를 통해 인터넷에 연결해야 했지만 macOS가 이를 허용하지 않았다. macOS는 일부 추가 하드웨어에 대해 드라이버와 일부 커널 제한이 필요하다는 것을 알고 있다.&lt;br&gt;&lt;br&gt;Kext 파일은 macOS에 필수적인 드라이버다. "Kext"는 Kernel Extension의 약자로, kext 파일은 컴퓨터 부팅 시 로드될 추가 코드를 제공하여 Mac OS X의 커널(운영 체제의 핵심 부분)을 확장한다.&lt;/p&gt;</description></item><item><title>Google Cloud Platform의 App Engine에서 nginx로 HTTPS 301 리디렉션하기</title><link>https://ercan.cloud/ko/redirect-301-https-on-app-engine-with-nginx-on-google-cloud-platform/</link><pubDate>Thu, 15 Apr 2021 07:06:42 +0300</pubDate><guid>https://ercan.cloud/ko/redirect-301-https-on-app-engine-with-nginx-on-google-cloud-platform/</guid><description>&lt;p&gt;요즘 Google Cloud Platform의 App Engine을 가지고 놀기 시작했다. Docker에서 PHP를 실행하기 위해 커스텀 런타임이 포함된 Flexible Environment를 사용 중이다. App Engine은 HTTP와 HTTPS를 통해 콘텐츠를 제공한다. Web UI를 통해 HTTP를 비활성화하거나 HTTP 트래픽을 HTTPS로 쉽게 리디렉션하는 것을 확인했지만, 현재로서는 불가능하다. 맞다, 기본 기능이 지원되지 않는다!&lt;br&gt;&lt;br&gt;문서(&lt;a rel="noreferrer noopener" href="https://cloud.google.com/appengine/docs/standard/php7/application-security" target="_blank"&gt;https://cloud.google.com/appengine/docs/standard/php7/application-security&lt;/a&gt;)를 확인하고 app.yaml 파일을 통해 301 리디렉션을 설정하려고 했다. 시도한 내용은 다음과 같다:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;handlers:
- url: /.*
 script: auto
 secure: always
 redirect_http_response_code: 301
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;이번에는 nginx에 도전하기로 결정했다. &lt;strong&gt;nginx-app.conf&lt;/strong&gt; 파일을 열고 다음과 같이 작성했다:&lt;/p&gt;</description></item><item><title>Terraform으로 AWS Load Balancer에 두 개의 다른 Target Group 설정하기</title><link>https://ercan.cloud/ko/set-two-different-target-groups-on-aws-load-balancer-with-terraform/</link><pubDate>Mon, 05 Apr 2021 11:18:19 +0300</pubDate><guid>https://ercan.cloud/ko/set-two-different-target-groups-on-aws-load-balancer-with-terraform/</guid><description>&lt;p&gt;지난주 Terraform을 통해 Infrastructure as Code를 작성했다. 내 경우 AWS Application Load Balancer의 퍼블릭 인터페이스에서 두 개의 다른 Target Group으로 트래픽을 전달해야 했다. HCL(HashiCorp Language)은 어려운 언어는 아니지만 문서에 많은 주제가 빠져 있고, Terraform에는 문서화되지 않은 몇 가지 포인트도 있다.&lt;br&gt;&lt;br&gt;검색해보니 "AWS에서 Terraform으로 여러 Target Group 사용하기" 주제에 대한 많은 질문과 이슈가 있었다.&lt;/p&gt;
&lt;p&gt;제안된 해결책들을 읽었지만 도움이 되지 않았다. 그 후 "aws_lb_listener"를 리소스로 사용하기로 결정했다. 마침내 내 경우에 맞는 해결책을 찾았다. 아래에서 세부 사항을 확인할 수 있다:&lt;/p&gt;</description></item><item><title>Amazon Web Services에서 재부팅 없이 EC2 Linux 디스크 확장하기</title><link>https://ercan.cloud/ko/extend-your-ec2-linux-disk-without-reboot-on-amazon-web-services/</link><pubDate>Mon, 08 Feb 2021 15:08:26 +0300</pubDate><guid>https://ercan.cloud/ko/extend-your-ec2-linux-disk-without-reboot-on-amazon-web-services/</guid><description>&lt;p&gt;어떤 이유로든 재부팅 없이 안전하게 EC2 Linux 서버를 확장해야 할 때가 있다. 이 글에서는 AWS에서 EC2 Linux 디스크를 확장하는 방법을 배우게 된다.&lt;br&gt;&lt;br&gt;이 예제에서는 디스크 크기를 80GiB에서 120GiB로 확장하는 과정을 보여준다.&lt;/p&gt;
&lt;h2&gt;&lt;strong&gt;1단계: 볼륨 수정&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;br&gt;AWS Console에 로그인하고 EC2의 볼륨(디스크)을 찾는다. 팁: 왼쪽 창에 &lt;strong&gt;Elastic Block Store &gt; Volumes&lt;/strong&gt;가 있다. 볼륨을 우클릭한 다음 "Modify Volume" 옵션을 선택한다. 아래 이미지와 같다. 적절한 크기를 선택하고 &lt;strong&gt;Modify&lt;/strong&gt; 버튼을 클릭한다.&lt;/p&gt;
&lt;figure class="wp-block-image size-large is-resized is-style-default"&gt;&lt;img src="https://ercan.cloud/uploads/screen-shot-2021-02-08-at-18.13.16-1024x608-2.png" alt="" class="wp-image-4313" width="512" height="304"/&gt;&lt;/figure&gt;
&lt;h2&gt;&lt;br&gt;&lt;strong&gt;2단계: 디스크 크기 확인&lt;/strong&gt;&lt;/h2&gt;
&lt;p&gt;&lt;/p&gt;</description></item><item><title>AWS RDS(MariaDB)에서 새 Grant User 생성하기</title><link>https://ercan.cloud/ko/create-a-new-grant-user-on-aws-rds-mariadb/</link><pubDate>Sat, 30 Jan 2021 23:01:56 +0300</pubDate><guid>https://ercan.cloud/ko/create-a-new-grant-user-on-aws-rds-mariadb/</guid><description>&lt;p&gt;오늘은 MariaDB가 포함된 AWS RDS를 다루어 보았다. 일반적으로 AWS는 AWS RDS에 접근하기 위한 사용자를 하나만 생성한다. 다음은 MariaDB가 포함된 AWS RDS에서 새 Grant User를 생성하는 단계다.&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;mysql&amp;gt; GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, RELOAD, PROCESS, REFERENCES, INDEX, ALTER, SHOW DATABASES, CREATE TEMPORARY TABLES, LOCK TABLES, EXECUTE, REPLICATION SLAVE, BINLOG MONITOR, CREATE VIEW, SHOW VIEW, CREATE ROUTINE, ALTER ROUTINE, CREATE USER, EVENT, TRIGGER ON *.* TO 'YOUR-MYSQL-USERNAME'@'CLIENT-IP-OR-DNS-NAME' IDENTIFIED BY 'CLEAR-TEST-PASSWORD' WITH GRANT OPTION;
&lt;p&gt;Query OK, 0 rows affected (0.009 sec)&lt;/code&gt;&lt;/pre&gt;&lt;/p&gt;</description></item><item><title>Amazon Web Services에서 CloudFront와 함께 Amazon S3 CORS 설정하기</title><link>https://ercan.cloud/ko/amazon-s3-cors-settings-with-cloudfront-on-amazon-web-services/</link><pubDate>Tue, 29 Sep 2020 08:27:16 +0300</pubDate><guid>https://ercan.cloud/ko/amazon-s3-cors-settings-with-cloudfront-on-amazon-web-services/</guid><description>&lt;p id="f6c8"&gt;&lt;strong&gt;CloudFront (CDN)&lt;/strong&gt;을 통해 &lt;strong&gt;Amazon S3&lt;/strong&gt;에서 정적 콘텐츠를 직접 제공하는 경우, 사용자에게 전달되는 폰트, 이미지, 기타 정적 콘텐츠에 관한 오류가 발생할 수 있다. 사실 복잡하지 않다. 이 문제는 Amazon S3 Bucket의 CORS 설정에서 해결할 수 있다.&lt;/p&gt;
&lt;p id="9f9a"&gt;&lt;strong&gt;Amazon S3 CORS란 무엇인가?&lt;/strong&gt;&lt;/p&gt;
&lt;p id="6d95"&gt;Cross Origin Resource Sharing(일명 CORS). CORS 명세는 기본 콘텐츠를 제공한 도메인이 아닌 다른 도메인으로 요청을 보내는 웹 애플리케이션을 구축할 수 있는 기능을 제공한다.&lt;/p&gt;
&lt;p id="976e"&gt;&lt;strong&gt;1단계: AWS Web Console에서 버킷 권한 설정 열기&lt;/strong&gt;&lt;/p&gt;
&lt;p id="1375"&gt;&lt;a href="https://s3.console.aws.amazon.com"&gt;https://s3.console.aws.amazon.com&lt;/a&gt; 페이지에 방문하여 자격 증명으로 S3 콘솔에 로그인한 후, CloudFront에 연결된 버킷을 선택한다.&lt;/p&gt;</description></item><item><title>Docker에서 작동하는 GitLab을 매일 백업하기</title><link>https://ercan.cloud/ko/take-your-gitlab-backup-everyday-if-it-works-in-docker/</link><pubDate>Wed, 16 Sep 2020 15:27:44 +0300</pubDate><guid>https://ercan.cloud/ko/take-your-gitlab-backup-everyday-if-it-works-in-docker/</guid><description>&lt;p&gt;Docker에서 GitLab을 사용 중이며(컨테이너화를 좋아하기 때문에), Docker를 사용할 때 더 탄력적으로 느껴지고 필요하면 GitLab 환경을 어디로든 이동할 수 있기 때문에 정말 만족한다.&lt;br&gt;&lt;br&gt;GitLab 백업은 모든 소스 코드와 Wiki, 어쩌면 소스 코드 이상을 보관하고 있기 때문에 정말 중요하며, 중요한 수준에서 실행 중인 서비스가 있다면 백업이 첫 번째로 해야 할 일이다.&lt;/p&gt;
&lt;h2&gt;Docker 컨테이너 이름 확인하기&lt;/h2&gt;
&lt;p&gt;다음 명령으로 GitLab을 Docker에서 실행한다:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;&amp;#91;ercan@gitlab ~]$ docker run --detach \
 --hostname gitlab.ercanermis.com \
 --publish 443:443 --publish 80:80 --publish 22:22 \
 --name gitlab \
 --restart always \
 --volume /srv/gitlab/config:/etc/gitlab \
 --volume /srv/gitlab/logs:/var/log/gitlab \
 --volume /srv/gitlab/data:/var/opt/gitlab \
 gitlab/gitlab-ce:latest&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;백업하기&lt;/h2&gt;
&lt;pre class="wp-block-code"&gt;&lt;code&gt;docker exec gitlab gitlab-rake gitlab:backup:create DIRECTORY=gitlab&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;또한 &lt;code&gt;/srv/gitlab/config/&lt;/code&gt; 경로에 있는 &lt;code&gt;gitlab.rb&lt;/code&gt;와 &lt;code&gt;gitlab-secrets.json&lt;/code&gt; 파일도 백업해야 한다.&lt;/p&gt;</description></item><item><title>CentOS, Ubuntu, macOS에서 큰 파일 쉽게 찾기</title><link>https://ercan.cloud/ko/find-large-files-in-centos-ubuntu-and-macos-easily/</link><pubDate>Sat, 18 Jul 2020 13:08:30 +0300</pubDate><guid>https://ercan.cloud/ko/find-large-files-in-centos-ubuntu-and-macos-easily/</guid><description>&lt;p&gt;때로는 누구나 시스템에서 큰 파일을 확인해야 할 수 있다. 내가 자주 사용하는 유용한 명령어들이 있다. Linux에서 큰 파일을 쉽게 찾아보자.&lt;br&gt;&lt;br&gt;첫 번째 패턴은 다음과 같다:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;find /home/ercan/ -type f -size +100000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'&lt;/code&gt;&lt;/pre&gt;
&lt;p class="has-medium-font-size"&gt;&lt;strong&gt;시스템에서 파일 크기가 250MB를 초과하는 경우:&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;sudo find /home/ercan/ -type f -size +250000k -exec ls -lh {} \; | awk '{ print $9 ": " $5 }'&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;결과는 다음과 같다:&lt;/p&gt;</description></item><item><title>CentOS 또는 Amazon Linux 2에서 "Error: rpmdb open failed" 수정하기</title><link>https://ercan.cloud/ko/fix-error-rpmdb-open-failed-on-centos-or-amazon-linux-2/</link><pubDate>Mon, 20 Apr 2020 11:49:37 +0300</pubDate><guid>https://ercan.cloud/ko/fix-error-rpmdb-open-failed-on-centos-or-amazon-linux-2/</guid><description>&lt;p&gt;어제 Amazon Web Services 클라우드에서 제공하는 Amazon Linux 2에서 일부 서비스를 테스트하기 시작했다. 어떤 이유로 패키지 관리자 yum이 손상되었고, yum 데이터베이스 업데이트를 시작했을 때 rpmdb open failed에 관한 오류가 발생했다. 아래에서 내 오류를 확인할 수 있다. Centos7이나 yum을 패키지 관리자로 사용하는 다른 Linux 배포판을 실행 중이라면 계속 읽어도 된다.&lt;/p&gt;
&lt;amp-fit-text layout="fixed-height" min-font-size="10" max-font-size="72" height="80"&gt;&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;error: rpmdb: BDB0113 Thread/process 18275/140171317404864 failed: BDB1507 Thread died in Berkeley DB library
error: db5 error(-30973) from dbenv-&gt;failchk: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: cannot open Packages index using db5 - (-30973)
error: cannot open Packages database in /var/lib/rpm
CRITICAL:yum.main:
&lt;p&gt;Error: rpmdb open failed&lt;/code&gt;&lt;/pre&gt;&lt;/amp-fit-text&gt;&lt;/p&gt;</description></item><item><title>서비스 시작/중지 시에만 발생하는 'No space left on device' 오류</title><link>https://ercan.cloud/ko/error-no-space-left-on-the-device-when-starting-stopping-services-only/</link><pubDate>Sun, 01 Mar 2020 07:46:00 +0300</pubDate><guid>https://ercan.cloud/ko/error-no-space-left-on-the-device-when-starting-stopping-services-only/</guid><description>&lt;p&gt;EC2 인스턴스에 안전하게 연결하기 위해 Amazon SSM Agent를 사용하고 있다. Amazon SSM Agent는 aws.amazon.com 웹 콘솔을 통해서도 EC2 인스턴스 콘솔에 연결할 수 있다. 그래서 이것이 내가 선호하는 방식이다.&lt;br&gt;&lt;br&gt;며칠 전 Amazon SSM Agent를 통해 EC2에 연결하려고 했을 때 응답이 없었고, 그 후 일반적인 방식인 SSH로 연결하기로 결정했다.&lt;br&gt;&lt;br&gt;물론 먼저 Amazon SSM Agent를 재시작하려 했고 다음을 보았다:&lt;/p&gt;
&lt;pre class="wp-block-code"&gt;&lt;code lang="bash" class="language-bash"&gt;[root@i-0cd9514c60d532e78 ~] systemctl restart amazon-ssm-agent.service
Error: No space left on device&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;디스크 상태에 관한 이 오류 메시지는 예상하지 못했다. 디스크 사용량을 확인해보기로 했다:&lt;/p&gt;</description></item><item><title>Juniper SRX110H-VA VDSL2 단계별 설정</title><link>https://ercan.cloud/ko/juniper-srx110h-va-vdsl2-configuration-step-by-step/</link><pubDate>Sun, 09 Feb 2020 06:48:00 +0300</pubDate><guid>https://ercan.cloud/ko/juniper-srx110h-va-vdsl2-configuration-step-by-step/</guid><description>&lt;p&gt;어젯밤 &lt;a href="https://www.linkedin.com/in/kenanbilgic/" target="_blank" rel="noreferrer noopener"&gt;Kenan Bilgic&lt;/a&gt;과 통화하면서 "Juniper SRX-110H-VA를 구하고 싶다"고 말했다. 그러자 Kenan은 "나한테 이미 Juniper SRX-110H-VA가 있으니, 그냥 주소를 알려주면 배송해 줄게"라고 말했다.&lt;/p&gt;
&lt;p&gt;인터넷 제공업체로 &lt;a href="https://turk.net/" target="_blank" rel="noreferrer noopener"&gt;TurkNet&lt;/a&gt;을 사용 중이며, 우리 동네에서 정말 저렴하고 빠른 인터넷 제공업체다. 내 연결 유형은 VDSL2이며 Amazon Web Services(AWS)를 통해 VPN 연결을 만들어야 한다.&lt;/p&gt;
&lt;h2&gt;내 라우터가 도착했다!&lt;/h2&gt;
&lt;p&gt;새 라우터 기기에 정말 신이 났다. RJ13을 통해 구리 전화 케이블에 연결하기 전에 설정해야 한다. 라우터를 기본으로 설정하고 내 GitHub 리포지토리에 설정을 푸시했다.&lt;/p&gt;</description></item><item><title>Docker 컨테이너에 Logrotation 활성화하기</title><link>https://ercan.cloud/ko/enable-logrotation-for-docker-containers/</link><pubDate>Fri, 29 Nov 2019 17:17:00 +0300</pubDate><guid>https://ercan.cloud/ko/enable-logrotation-for-docker-containers/</guid><description>&lt;p&gt;시스템에 Docker를 설치하고 사용하면, 백그라운드에서 인지하지 못하는 사이에 Docker에서 실행 중인 컨테이너가 많은 양의 로그를 생성할 수 있다.&lt;/p&gt;
&lt;p&gt;Docker 서비스는 일반적으로 logrotate를 지원하지만, 이 지원은 기본적으로 꺼져 있다. 어느 날 갑자기 디스크가 가득 차면, 내가 무슨 말을 하는지 정확히 알게 될 것이다. : )&lt;/p&gt;
&lt;p&gt;서버에 Docker 서비스를 처음 설치하고 컨테이너를 처음 실행하는 경우, 아래 단계를 따르면 된다.&lt;/p&gt;
&lt;p&gt;Docker 서비스가 중지된 상태에서, 먼저 Docker 서비스가 logrotate 작업을 위해 필요로 하는 파일을 텍스트 편집기로 연다. 내 취향은 vim이다, vim을 사용했다. nano, pico와 같은 다른 편집기를 선택할 수도 있다.&lt;/p&gt;</description></item><item><title>터미널에서 wget으로 특정 파일 확장자 쉽게 다운로드하기</title><link>https://ercan.cloud/ko/download-specific-file-extension-via-wget-easily-on-terminal/</link><pubDate>Fri, 22 Nov 2019 16:37:00 +0300</pubDate><guid>https://ercan.cloud/ko/download-specific-file-extension-via-wget-easily-on-terminal/</guid><description>&lt;p&gt;때로는 디렉토리나 폴더에 여러 확장자의 파일이 있을 수 있다. 예를 들어 .jpg, .png, .gif, .mp3, .mp4 등. 해당 소스에서 gif 파일만 특정해서 다운로드하고 싶은데 방법을 모르겠는가? 두려워하지 마라, 잘 찾아왔다.&lt;br&gt;&lt;br&gt;wget은 GNU 라이선스(즉, 무료)의 작은 소프트웨어로, Linux 및 macOS 운영 체제에 기본 탑재되어 있다.&lt;br&gt;&lt;br&gt;얼마 전 ftp 디렉토리에서 동일한 .mp4 및 .webm 비디오를 다운로드하고 싶었지만, .mp4나 .webm 파일 중 하나만 다운로드해야 했다. 100개의 .mp4 파일 크기가 10GB인 반면, 동일한 내용의 100개 .webm 파일은 6GB에 불과했기 때문이다. 훨씬 적은 디스크 공간을 할당하고 싶어서 .webm 파일을 다운로드하기로 결정했다.&lt;br&gt;&lt;br&gt;이를 위해 다음 명령을 실행하고 화면을 지켜보기 시작했다.&lt;/p&gt;</description></item><item><title>터미널에서 Linux 특정 파일들의 정확한 크기 찾기</title><link>https://ercan.cloud/ko/find-the-exact-size-of-certain-files-in-linux-via-terminal/</link><pubDate>Fri, 15 Nov 2019 19:00:00 +0300</pubDate><guid>https://ercan.cloud/ko/find-the-exact-size-of-certain-files-in-linux-via-terminal/</guid><description>&lt;p&gt;어느 날 macOS, Linux 또는 사용 중인 서버에 여러 확장자의 파일이 많이 있을 수 있으며, 이러한 파일들의 크기가 궁금할 수도 있고, 특정 작업을 위해 해당 확장자를 가진 파일들의 크기를 확인하고 싶을 수도 있다.&lt;/p&gt;
&lt;p&gt;얼마 전 내가 작업하던 서버에는 *.webm과 *.mp4 파일 확장자가 모두 있었고, 서버의 디스크를 업그레이드하거나 동일한 비디오의 .mp4 확장자를 가진 파일들을 삭제해야 했다.&lt;/p&gt;
&lt;p&gt;이를 수행하는 여러 방법이 있다. 나는 세 가지 서로 다른 그리고 가장 자주 사용되는 명령어만 설명할 것이다.&lt;/p&gt;</description></item><item><title>CentOS 7 또는 CentOS 8에서 SELinux 비활성화하기</title><link>https://ercan.cloud/ko/disable-selinux-on-centos-7-or-centos-8/</link><pubDate>Fri, 08 Nov 2019 19:00:00 +0300</pubDate><guid>https://ercan.cloud/ko/disable-selinux-on-centos-7-or-centos-8/</guid><description>&lt;p&gt;이 튜토리얼은 CentOS 서버에서 SELinux(Security-Enhanced Linux)를 비활성화하는 방법을 보여준다. CentOS 버전은 7 또는 8이어야 한다. 버전은 중요하지 않다.&lt;/p&gt;
&lt;h2&gt;SELinux란 무엇인가?&lt;/h2&gt;
&lt;p&gt;SELinux는 커널이 직접 제어하는 보안 메커니즘이다. 관리자와 사용자가 SELinux 정책에 기반한 접근 제어에 대해 더 많은 통제권을 가질 수 있게 한다.&lt;/p&gt;
&lt;p&gt;SELinux에는 세 가지 작동 모드가 있다:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Enforcing:&lt;/strong&gt; SELinux 정책과 정책 규칙에 기반한 접근을 허용한다.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Permissive:&lt;/strong&gt; SELinux는 Enforcing 모드에서 실행 중이었다면 거부되었을 작업만 로깅한다.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Disabled:&lt;/strong&gt; 메시지가 로깅되지 않으며 서버에 SELinux 정책이 더 이상 활성화되지 않는다. 대부분의 경우 Disabled 모드는 cPanel이나 Plesk와 같은 웹 제어판에서 사용된다.&lt;/li&gt;&lt;/ol&gt;
&lt;h2&gt;사전 요구사항&lt;/h2&gt;
&lt;p&gt;root 사용자 또는 &lt;strong&gt;sudo 권한&lt;/strong&gt;이 있는 사용자만 SELinux 모드를 업데이트할 수 있다.&lt;/p&gt;</description></item><item><title>Hello Blog!</title><link>https://ercan.cloud/ko/hello-blog/</link><pubDate>Sun, 03 Nov 2019 22:24:00 +0300</pubDate><guid>https://ercan.cloud/ko/hello-blog/</guid><description>&lt;p&gt;메모를 남기거나 nginx, phpMyAdmin, MySQL, PHP-FPM 등의 Linux 서버 및 일부 Linux 소프트웨어에 관한 기술 정보를 공유하기 위해 블로그를 몇 번이나 개설했는지 모르지만, 정기적으로 블로그 글을 작성하는 데 성공한 적은 한 번도 없다.&lt;/p&gt;
&lt;p&gt;내 블로그 주소는 내 이름과 성을 포함하고 있다. 그러니 내 이름은 이미 알고 있을 것이다 : )&lt;/p&gt;
&lt;p&gt;저는 &lt;a rel="noreferrer noopener" aria-label="Masomo (opens in a new tab)" href="https://linkedin.com/company/masomo" target="_blank"&gt;Masomo&lt;/a&gt;에서 Linux System Administrator로 근무하고 있으며, 멋진 팀과 함께 주로 DevOps 업무를 수행하고 있다.&lt;/p&gt;</description></item></channel></rss>