<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>songwoo-yu.log</title>
        <link>https://velog.io/</link>
        <description></description>
        <lastBuildDate>Thu, 22 Jan 2026 08:51:57 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <image>
            <title>songwoo-yu.log</title>
            <url>https://velog.velcdn.com/images/songwoo-yu/profile/e4238330-e81b-4f3a-915f-385a7ad6a3ea/social_profile.png</url>
            <link>https://velog.io/</link>
        </image>
        <copyright>Copyright (C) 2019. songwoo-yu.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/songwoo-yu" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[AWS TGW를 사용하여 VPC 간 통신하기]]></title>
            <link>https://velog.io/@songwoo-yu/AWS-TGW%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-VPC-%EA%B0%84-%ED%86%B5%EC%8B%A0%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@songwoo-yu/AWS-TGW%EB%A5%BC-%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC-VPC-%EA%B0%84-%ED%86%B5%EC%8B%A0%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 22 Jan 2026 08:51:57 GMT</pubDate>
            <description><![CDATA[<p>오늘의 목표는 AWS Transit Gateway를 활용하여 서로 다른 VPC(네트워크 망)을 연결하고, 보안을 유지하면서 효율적으로 통신할 수 있는 멀티 계정, 멀티 VPC 네트워크 아키텍처를 구축하는 것이었다.</p>
<p>가장 먼저 수업에 필요한 실습용 IAM 계정을 생성했다. 72시간 동안 사용할 수 있는 리소스라고 하여 많이 복습해보려고 한다. 해당 계정은 제어 권한이 다수 포함된 Administrator Access 계정이었다.</p>
<p>여기에 개발용 네트워크망과 운영용 네트워크망 환경을 분리하여 VPC를 생성했다. 논리적으로 격리된 가상 네트워크인 Virture Private Cloud를 생성한 것이다.</p>
<p>앞서 생성한 VPC들과 온프레미스 네트워크를 연결하기 위한 허브의 역할로 Trasit Gateway를 생성한다.</p>
<p>CloudFormation에서 미리 작성된 YAML 파일로 복잡한 네트워크 환경을 자동을 배포해봤고, SSM SessionM Manager에서 CLI로 각 EC2에 접속하여 통신 테스트(ping)을 진행하면 끝이다.</p>
<h3 id="aws-workshop-studio">AWS Workshop Studio</h3>
<p>실습을 하는 방식은 세 가지가 있다. 먼저 우리가 사용할 워크샵 스튜디오를 이용하는 방식은 팀 코드를 받아서 한정된 시간동안 무한으로 연습해볼 수 있는 방식이다. 다음은 개인 AWS 계정을 사용하는 방식, 마지막으로 Event Engine을 사용하는 방식이 있다. 이벤트 엔진을 사용하는 경우 Team Hash값을 사용하여 콘솔에 접속하는 방식이라고 하는데, 안 해봐서 잘 모르겠다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/3c8729b5-ddc5-4bd4-9b2a-cd750c09f5b7/image.png" alt=""></p>
<p>먼저 <a href="https://catalog.us-east-1.prod.workshops.aws/">워크샵 스튜디오</a> 실습 환경에서 이벤트를 시작하게 된다. 여기는 해커톤이나 워크샵과 같은 행사에서 실습하기 위한 무상 환경이다.<img src="https://velog.velcdn.com/images/songwoo-yu/post/2cb8416a-71ea-42ab-9fd9-3797b0bf85d7/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/e4a7fe0d-2a3c-4d55-a9da-e903174cf001/image.png" alt=""></p>
<p><code>Get Started</code> 버튼을 누르게 되면 가장 먼저 one-time-password를 통해서 workshop용 계정이 생성되게 된다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/62068f18-3dc5-4e74-913e-61d28891ce5c/image.png" alt=""></p>
<p>이후에 Event Access code를 입력하라고 한다. 이거는 주최측에서 발급해준 코드를 사용하여 접속하면 된다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/29776182-e1db-4a92-a675-5566d6af8d1c/image.png" alt=""></p>
<p>그렇게 되면 내가 참가한 이벤트에 대한 내용이 나오게 되고, 레벨과 유효기간이 나오게 된다. 대강 살펴보면 TGW를 이용한 워큐샵이라고 나온다. 이용약관에 동의해준다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/81a81166-6b67-4c77-aacc-d9ce2991dfd6/image.png" alt=""></p>
<p>이제 해당 이벤트 계정에 접근할 수 있는 기간이 알림으로 나오게 되고, 사용 가능한 리전, 워크샵에 대한 정보까지 나오게 된다.</p>
<blockquote>
<p>From the basic configuration of the AWS Transit Gateway, you&#39;ll learn about multi-account environments and Intra/Inter Peering through hands-on exercises. We&#39;ll also look at how to monitor Transit Gateways using the Network Manager.</p>
</blockquote>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/7aded4a1-c0ca-4f11-ac02-2381378f1102/image.png" alt=""></p>
<p>오늘할 내용에 대한 설명도 나온다. 7개의 랩으로 TGW 기본 구성부터 TGW 모니터링 방식까지 배우게 된다고 한다.</p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/0057d1e7-99dd-4949-80b7-5161519107f9/image.png" alt=""></p>
<h4 id="twg">TWG</h4>
<p><a href="https://aws.amazon.com/ko/transit-gateway/">TWG</a>에 대한 설명으로 시작한다. 간단하게 요약하면 Transit Gateway는 중앙 허브의 역할로 VPC와 온프레미스 네트워크를 연결해주는 역할을 한다. 즉 간편하게 연결하고, 쉽게 제어 및 모니터링을 하고, 보안을 유지하며 멀티캐스트를 유연하게 사용할 수 있다는 장점이 있다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/9663fa41-967b-4b73-ba7d-0c4de21521f0/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/9585650d-5a44-4d13-812b-f1b9e6b39dc0/image.png" alt=""></p>
<h3 id="iam-user-생성하기">IAM User 생성하기</h3>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/d818caf7-8a0f-4690-86eb-517a30785dfc/image.png" alt="">
<a href="https://console.aws.amazon.com/iam/home#/home">open AWS Console(ap-northeast-2)</a>를 통해 콘솔에 접속해준다. 그런 이후 IAM의 User을 눌러 들어가준다. 나는 어제 생성한 계정이 있어서 두 개이지만, 원래는 하나이다. 여기서 create user을 눌러 새롭게 유저를 생성해주겠다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/5867c2ef-eea4-49cb-a9c7-2a8c598d4de4/image.png" alt=""></p>
<p>나는 user1이 있기에 user2를 생성할 것이다. provice user access to the AWS Manager Console을 체크하여 오늘 진행할 VPC부터 TGW를 생성하고 실습하는데 문제가 없도록 권한을 추가한다. user must create a  new password~ 옵션을 체크 해제한다. 그 이유는 임시 실습 환경이므로 패스워드 재설정을 하지 않는 것이 편리하기 때문이다. 실제에서는 체크하도록 한다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/31d1f9ef-67d7-4217-bbf8-2119f1177452/image.png" alt=""></p>
<p>그다음 우리가 사용할 권한을 추가하기 위해 attach policies directly를 체크하고, <code>AdministratorAccess AWS managed - job function</code> 권한을 추가해주도록 한다. 다음 단계에서 선택한 내용들을 확인하고 생성해준다.  <img src="https://velog.velcdn.com/images/songwoo-yu/post/03e2b264-f183-4107-9fe1-817b8bf3f338/image.png" alt=""></p>
<p>이때 console sign in url을 복사해놔야지 이따 접속할 때 편하다. 다른 곳에서 찾아서 할 수도 있다.</p>
<h4 id="assume-role-부여하기">Assume Role 부여하기</h4>
<p>IAM Dashboard에서 EC2의 roles를 생성하여 권한 가지도록 규칙을 생성할 것이다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/45fd1ea9-510f-4ff8-bc1b-4b92968ed7aa/image.png" alt=""></p>
<p>AdministratorAccess 권한을 추가한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/e7b93667-58cd-44a5-a757-32fe811bcb60/image.png" alt=""></p>
<p>role 이름은 사용자가 알기 쉽게 입력해도 되지만, 일단 실습이기에 메뉴얼대로 진행한다. <code>ec2-role</code> 난 이전에 만들었었기에 1을 붙여줬다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/8a593768-02df-4c2a-a54b-e75c3c1f5094/image.png" alt=""></p>
<h3 id="iam-계정-접속하기">IAM 계정 접속하기</h3>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/2c1f8561-c434-4407-8f05-c7650a965a22/image.png" alt="">
아까 저장하라고 했던 URL로 접속해도 되고, AWS Account 아래 주소를 클릭하여 접속해도 된다. user마다 url이 다르지 않을가 생각할 수 있는데, 일단 저 url이 중요한 것이 아니다. 본 계정의 Account ID가 중요한 것이다. 그냥 AWS 콘솔 검색한 다음에 IAM 계정으로 접속을 선택하고 Account ID만 맞춰주면 같은 접속 경로가 되는 것이다. 그리고 user의 id(user01, user02)와 PW를 선택해서 입력해주면 iam 계정에 접속이 되는 것이다. 우측 상단의 사용자명이 맞는지 확인하면 끝이다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/08ada816-642c-470b-9f6c-dea6f6107d40/image.png" alt=""></p>
<h4 id="ec2-환경-구성">EC2 환경 구성</h4>
<p><code>Cloudformation</code>에 접속하여 Create Stack을 눌러준다. 여기서는 이미 만들어진 yml파일을 기반으로 keypair을 생성하고 업로드하기 위해 EC2구성을 하게 된다. 여기에는 권한 설정(IAM), 최신 운영체제 선택(AL2023), 필수 도구 설치(UserData)까지 한 번에 완료하여 사용자가 즉시 실습할 수 있는 EC2를 자동으로 생성하게 해준다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/92c20f3b-6b57-4363-aa6e-93fd4abc1762/image.png" alt=""></p>
<p>upload a template file을 선택하고, Workshop-EC2.yml 파일을 업로드해준다. 해당 파일은 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/2369debb-08b6-4717-938c-75a593874084/image.png" alt=""></p>
<p>다음으로 넘어가서 이름은 test-ec2로 설정하고, 서브넷은 172.31.0.0/20을 사용해준다. VPC는 디폴트를 사용한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/d7723f19-d415-4950-a6ed-d6786a67e136/image.png" alt=""></p>
<p>다 체크하고 submit하게 되면 다음과 같이 내가 yaml로 설정한 ec2 환경이 생성되는 모습을 볼 수 있다. complete되었다면 넘어가준다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/a04534a3-d4be-4e35-addc-666e023da5af/image.png" alt=""></p>
<p>이번에는 EC2를 들어가 instances에서 내가 생성한 EC2가 running 상태인지 확인해보고 connect를 눌러 접속한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/199cc67f-9dff-4622-b591-6fc36202a35d/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/b85b3b8a-791d-42af-be4a-2e9d12c98555/image.png" alt="">
session Manager를 통해 커넥트 누른다. 그렇지 않으면 오류가 날 것이다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/5833729b-d269-4811-9f01-0013ad892a43/image.png" alt=""></p>
<p>웹에서 터미널이 뜨게 되는데, 이제 해당 EC2 인스턴스에서 추후 생성할 개발EC2, 운영EC2를 모두 접속할 것이다. 이를 위해서 ssh-key를 생성해줘야 한다. 가장 먼저 <code>sudo ssh-keygen</code>을 입력하여 key를 생성한다. 가장 처음에 키의 이름을 물어보는데, mykey로 작성하여 나중에 작업할 때 혼선을 막아준다. 다만 나는 이미 어제 같은 이름으로 만들어 업로드를 해놨기 때문에 그런 것이니 이름을 바꿔생성한다(이미지는 그대로) 나머지는 엔터만 쳐주면 생성된다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/de6cf2c4-553c-4726-b7b2-2a8f2c4a5e5a/image.png" alt=""></p>
<p>이제 생성된 key pair 중 public key를 사용할 리전 계정에 업로드하여 추후 생성한 EC2에 등록해 놓을 것이다. 나는 앞서 말했듯 이름이 겹쳐서 이름을 바꿔서 새롭게 업로드했다. 다만 KeyPair 파라미터를 입력할 때, Seoul-VPC-PRD-Workshop.yml이나 Seoul-VPC-DEV-Workshop.yml 파일을 업로드하고 실행할 때, 화면에 나오는 KeyPair 입력란에 기본값인 mykey 대신 새로 만드신 키 이름(예: mykey-v2)을 선택하거나 직접 입력해줘야 한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/a3fa85c7-c22d-4574-9800-85e835b8a487/image.png" alt=""></p>
<pre><code class="language-bash">sudo mv mykey ./mykey.pem
sudo chmod 400 ./mykey.pem
export KeyName=mykey
echo &quot;export KeyName=${KeyName}&quot; | tee -a ~/.bash_profile
source ~/.bash_profile
aws ec2 import-key-pair --key-name &quot;mykey&quot; --public-key-material fileb://mykey.pub --region ap-northeast-2
aws ec2 import-key-pair --key-name &quot;mykey&quot; --public-key-material fileb://mykey.pub --region us-east-1</code></pre>
<h4 id="test-ec2에서-다른-ec2에-직접-접근하기-위해-플러그인-설치">test EC2에서 다른 EC2에 직접 접근하기 위해 플러그인 설치</h4>
<pre><code class="language-bash">sudo curl &quot;https://s3.amazonaws.com/session-manager-downloads/plugin/latest/linux_64bit/session-manager-plugin.rpm&quot; -o &quot;session-manager-plugin.rpm&quot;
sudo sudo yum install -y session-manager-plugin.rpm</code></pre>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/5548ad2c-b8e7-4321-aced-477f0b5a9dd4/image.png" alt=""></p>
<h3 id="tgw-구성하기">TGW 구성하기</h3>
<p>다시 cloudformation의 stacks로 돌아와서 yml을 첨부하여 Virginia-VPC-PRD, Virginia-VPC-DEV를 생성해준다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/370db6a5-7f99-4631-8665-b884a26afbf2/image.png" alt=""></p>
<p>yml 파일 선택하고(나는 리전이 버지니아로 바뀌었기에 이름을 그렇게 한 것이고, 기존 파일은 서울용으로 넣어줘도 무방하지 않다. 이따 보겠지만 오류나서 두 가지 바꿔줘야 한다) 해당 야믈파일에는 가상 네트워크 레이어 (VPC &amp; Subnets), 보안 레이어 (Security Groups), 컴퓨팅 레이어, 소프트웨어 설치 스크립트에 대한 내용들이 포함되어 있다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/7090699d-b05d-4aec-96c9-4c163593b329/image.png" alt=""></p>
<p>이름을 버지니아 vpc로 설정하고, 압서 만든 키 페어를 v2로 하면 된다. 또한 role 이름이 맞는지 확인하고 다음으로 넘어간다. 마찬가지로 DEV도 생성해주면 된다. 하지만 에러가 나는 이유는 yml 파일이 서울 리전에 맞게 되어 있기 때문이다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/6db9426e-0817-4389-bd65-d057c88b997d/image.png" alt=""></p>
<p>다만 나의 경우 리전이 버지니아로 되어 있기에 <img src="https://velog.velcdn.com/images/songwoo-yu/post/b714096a-b12b-4b4a-9be7-a77ec2eafd8f/image.png" alt=""></p>
<p>keypair도 변경해야 한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/d639f27e-2f44-4fdd-9a9e-09e2a93f4f5c/image.png" alt=""></p>
<p>다 잘 생성된 모습을 볼 수 있다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/9bc04a35-764f-4397-b1d8-3b8a50e5dec4/image.png" alt=""></p>
<p>이제 VPC도 잘 생성되었는지 확인해봐야 한다. VPC로 이동하여 생성이 잘 되었는지 확인한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/0baa9240-ace1-4f9a-b81a-537a17481a32/image.png" alt=""></p>
<p>EC2로도 이동하여 잘 생성되었는지 확인한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/05ccba3e-f753-4c09-ba04-902f73b0b5cf/image.png" alt=""></p>
<h3 id="tgw-구성">TGW 구성</h3>
<p>이제 진짜 TGW를 구성하여 세 인스턴스가 통신할 수 있게 해준다. 다시 CloudFormation으로 와서 파일을 업로드 해준다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/4f7e31e9-ce8c-4602-8964-f2ef9031c9c2/image.png" alt=""></p>
<p>이름은 Virginia-TGW로 해주고 생성해본다. 여기도 마찬가지로 발생하는 문제가 있다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/35602174-6d44-4644-bf12-627bf8ffba3f/image.png" alt=""></p>
<p>그 이유는 바로 내가 vpc 이름을 모두 Virginia-VPC~로 변경했기 때문이다. 파일에서도 전부 바꿔준다.  <img src="https://velog.velcdn.com/images/songwoo-yu/post/9a8fa3cb-87d2-4beb-adb5-e02d86ff640e/image.png" alt=""></p>
<p>이번에는 잘 생성되는 모습이 나타난다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/df0ae13b-64ce-43a5-9e4f-0fe7c144e711/image.png" alt=""></p>
<p>이제 VPC - Trasit gateways로 이동하여 잘 연결되서 생성되었는지 확인한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/c692ac6d-f01a-45a9-9b0d-8cd941c5f887/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/6bc2283c-e4da-48b4-b311-ea825bdc4051/image.png" alt=""></p>
<p>attachment가 서브넷과 잘 연결되었는지를 확인한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/872ce171-a5c5-40ac-a36b-55de91ef31e7/image.png" alt=""></p>
<p>두 vpc가 association되어 있는지 확인한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/cff6ee9a-b0ea-4eab-ac90-52fe4a1c7a55/image.png" alt=""></p>
<h4 id="test-ec2-ssm-연결">Test EC2 SSM 연결</h4>
<p>접속하여 다음 명령어 붙여 넣는다. Private 인스턴스로 시험할 것인데, Cloudformation을 통해 System Manager와 Session Manager를 사용할 수 있도록 자동 배포 구성했다. </p>
<pre><code class="language-bash">aws ec2 describe-instances --query &#39;Reservations[].Instances[].[Tags[?Key==`Name`] | [0].Value, Placement.AvailabilityZone,InstanceId, InstanceType, ImageId,State.Name, PrivateIpAddress, PublicIpAddress ]&#39; --output table
![](https://velog.velcdn.com/images/songwoo-yu/post/2af94fd1-9438-4b8c-a6cb-614504e896a9/image.png)</code></pre>
<h4 id="ping-test">ping test</h4>
<p>변수에 EC2 ID 입력하고 PRD, DEV 인스턴스의 id를 가져온다. </p>
<pre><code class="language-bash">VA_VPC_PRD_ID=$(aws ec2 describe-instances \
  --region us-east-1 \
  --filters &quot;Name=tag:Name,Values=Virginia-VPC-PRD-Private-10.1.21.101&quot; \
  --query &quot;Reservations[0].Instances[0].InstanceId&quot; \
  --output text)</code></pre>
<pre><code class="language-bash">VA_VPC_DEV_ID=$(aws ec2 describe-instances \
  --region us-east-1 \
  --filters &quot;Name=tag:Name,Values=Virginia-VPC-DEV-Private-10.3.21.101&quot; \
  --query &quot;Reservations[0].Instances[0].InstanceId&quot; \
  --output text)</code></pre>
<p>결과를 확인한다.</p>
<pre><code class="language-bash">echo &quot;Virginia PRD Instance ID: $VA_VPC_PRD_ID&quot;
echo &quot;Virginia DEV Instance ID: $VA_VPC_DEV_ID&quot;</code></pre>
<p>이제 ping test를 해본다. 당연히 안 되어야 한다. Subnet Route Table이 Transit Gateway(TGW)를 바라보도록 설정되지 않았기 때문이다.</p>
<pre><code class="language-bash"># 1. DEV EC2에 SSM으로 접속
aws ssm start-session --target $VA_VPC_DEV_ID --region us-east-1

# 2. 호스트네임 확인 (접속 성공 여부 확인)
hostname

# 3. PRD 환경(10.1.21.101)으로 ping 테스트
ping 10.1.21.101</code></pre>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/5d404179-a2d0-492c-815c-f9e76a5cd09f/image.png" alt=""></p>
<p>여기에서 라우팅 테이블을 변경해줘야 한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/7e28b4dd-c448-4155-b5fb-9eb4efeab2c2/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/b1401146-49cf-4819-a601-34e1fa962a06/image.png" alt=""></p>
<p>transit gateway로 변경해주고 하나 생성된 그걸로 설정한다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/4e4f4115-5ce2-47e8-9bcb-5f95841e9276/image.png" alt=""></p>
<p>마찬가지로 PRD의 것도 변경한다. 
그런 후에 dev로 접속하여 prd에 ping을 날려보겠다.</p>
<pre><code class="language-bash"># 1. DEV EC2에 SSM으로 접속 (버지니아 ID 변수 사용)
aws ssm start-session --target $VA_VPC_DEV_ID --region us-east-1

# 2. 호스트네임 확인
hostname

# 3. PRD 환경(10.1.21.101)으로 ping 테스트
ping 10.1.21.101</code></pre>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/6bdd2b8d-1888-4af6-ae22-2c86a0d20af8/image.png" alt="">
ping이 잘되는 것을 확인할 수 있다. 마찬가지로 PRD로 접속해서 해보려고 한다.</p>
<pre><code class="language-bash"># 1. 현재 DEV EC2 세션 종료
exit

# 2. PRD EC2에 SSM으로 접속 (버지니아 ID 변수 사용)
aws ssm start-session --target $VA_VPC_PRD_ID --region us-east-1

# 3. 호스트네임 확인
hostname

# 4. 결과값 확인 (버지니아 리전 형식)
# ip-10-1-21-101.ec2.internal

# 5. DEV 환경(10.3.21.101)으로 ping 테스트
ping 10.3.21.101</code></pre>
<p>여기도 잘 된다. </p>
<h3 id="정리">정리</h3>
<p>VPC Peering vs TGW: 만약 VPC Peering이었다면 두 VPC 사이의 직접적인 연결이 필요했겠지만, Transit Gateway는 중앙 허브 역할을 수행하여 모든 트래픽을 중계한다. Default Route (0.0.0.0/0): 현재 실습에서는 모든 외부 트래픽을 TGW로 돌려놨다. 이는 보안을 위해 모든 트래픽을 중앙(TGW)을 거쳐 검사하거나 통제하려는 멀티 계정 전략의 기초가 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[C# Comments, Variables]]></title>
            <link>https://velog.io/@songwoo-yu/C-Comments-Variables</link>
            <guid>https://velog.io/@songwoo-yu/C-Comments-Variables</guid>
            <pubDate>Tue, 20 Jan 2026 04:47:54 GMT</pubDate>
            <description><![CDATA[<h3 id="comments-주석">Comments 주석</h3>
<p>C# 코드를 설명하거나 테스트용 코드를 숨겨놓을 때 주석을 사용한다. <code>//</code>를 사용하여 한 줄 주석, <code>/*</code>로 시작하여  <code>*/</code>끝나면 그 사이는 모두 주석처리된다.</p>
<h3 id="variables-변수">Variables 변수</h3>
<p>변수는 데이터 값을 저장하는 컨테이너라고 볼 수 있다. 이때 다양한 변수의 타입이 존재한다. <code>int</code>는 정수를 저장하고, <code>double</code>은 실수(부동 소수점)을, <code>char</code>는 단일 문자를 작은 따옴표로 저장하고, <code>string</code>은 문자열을 큰 따옴표로 저장한다. <code>bool</code>은 논리 상태(참 거짓)을 저장한다.</p>
<p>위와 같은 변수를 사용하려면 변수의 유형을 지정하고 값을 할당해야 한다.</p>
<pre><code class="language-c">(type) (variableName) = value;</code></pre>
<p>먼저 본 자료형을 입력하고, 한 칸 띄운 다음 변수명을 작성해준다. 이후 콜론을 통해 이 변수에 저장될 값을 지정한다.</p>
<p>이번에는 john이라는 문자열을 name이라는 변수에 저장하려면 어떻게 해야 할지 정리해보겠다.</p>
<pre><code class="language-c">string name = &quot;John&quot;;
Console.WriteLine(name);</code></pre>
<p>이렇게 하면 Jonh이 출력된다.</p>
<p>한편 변수의 선언과 값 할당을 따로 할 수도 있다.</p>
<pre><code class="language-c">string name;
name = &quot;John&quot;; // here, name is John
name = &quot;song&quot;; // now name is song</code></pre>
<p>추가적으로 새로운 값을 할당했다면 그 값으로 덮어씌어진다는 것을 기억하면 좋다. 위 예제에서 세 번째 줄부터는 이름이 바뀐다는 것을 알 수 있다.</p>
<h4 id="declare-multiple-variables">Declare Multiple Variables</h4>
<p>같은 타입의 여러 변수를 한 번에 선언하기 위해서는 다음과 같이 선언할 수 있다. </p>
<pre><code class="language-c">int x = 5, y = 6, z = 50;
Console.WriteLine(x + y + z);

int a, b, c;
a = b = c = 50;</code></pre>
<h4 id="식별자">식별자</h4>
<p>모든 변수는 고유한 이름으로 식별되어야 한다. 식별자는 짧거나 자세한 설명이 포함된 이름이어야 가독성과 유지보수성이 높아진다.</p>
<blockquote>
<p>Names can contain letters, digits and the underscore character (_)
Names must begin with a letter or underscore
Names should start with a lowercase letter, and cannot contain whitespace
Names are case-sensitive (&quot;myVar&quot; and &quot;myvar&quot; are different variables)
Reserved words (like C# keywords, such as int or double) cannot be used as names</p>
</blockquote>
<h3 id="constants-상수">Constants 상수</h3>
<p>앞서 변수의 경우 값을 덮어씌울 수 있었다. 다만 상수는 처음 선언할 때 이후로 값을 변하게 할 수 없다. type앞에 const를 붙여주는 것만으로 상수를 선언할 수 있다.</p>
<pre><code class="language-c">const int myNum = 21;    // myNum is 21
myNum = 22;                // error</code></pre>
<h3 id="data-types">Data Types</h3>
<p>C#의 데이터 형식은 int(Integer), double(Floating point number), Char(Character), string, bool(Boolean) 등이 있다. 
int는 4bytes의 정수이고, long은 8bytes의 정수를 나타낸다.
float는 4bytes의 실수로 소수점 아래 6, 7자리까지 표현할 수 있다. double은 8bytes의 실수로 소수점 아래 15자리까지 표현이 가능하다.</p>
<p>bool은 1byte로 0, 1 즉 참과 거짓을 나타낼 수 있다. 
char은 2bytes로 하나의 문자나 글자를 저장한다. string은 두 개 이상의 문자열을 저장한다.</p>
<h4 id="type-casting">Type Casting</h4>
<p>이러한 타입도 캐스팅을 통해 변환할 수 있다. 캐스팅은 총 두 가지 방식이 있다. 먼저 Implicit(automatically) casting은 암묵적 자동 방식이라고도 하는데, 더 작은 크기의 타입을 큰 크기의 타입으로 변환하는 것이다. 예를들어 int(4bytes)를 double(8bytes)로 확장할 때이다.</p>
<pre><code class="language-c">int myInt = 8;
double myDouble = myInt;</code></pre>
<p>Explicit(manually) Casting은 명시적 수동 방식으로 값 앞에 괄호로 형식을 넣어 수동으로 수정하는 방식이다.</p>
<pre><code class="language-c">double myDouble = 9.78;
int myInt = (int) myDouble;</code></pre>
<p>그 외에 Type Conversion Methods를 사용하는 방식도 있다. 빌트인 메서드인 Convert.ToBoolean(Double, String, Int32, Int64)를 이용하는 방식이다.</p>
<pre><code class="language-c">int myInt = 10;
double myDouble = 5.25;
bool myBool = true;

Console.WriteLine(Convert.ToString(myInt));    // convert int to string
Console.WriteLine(Convert.ToDouble(myInt));    // convert int to double
Console.WriteLine(Convert.ToInt32(myDouble));  // convert double to int
Console.WriteLine(Convert.ToString(myBool));   // convert bool to string</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[C# Tutorial 시작하기]]></title>
            <link>https://velog.io/@songwoo-yu/C-Tutorial-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@songwoo-yu/C-Tutorial-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 20 Jan 2026 04:19:49 GMT</pubDate>
            <description><![CDATA[<h3 id="c">C#</h3>
<p>C#은 C, C++의 문법을 토대로 MS사에서 개발한 .NET 프레임워크에서 작동하는 객체/컴포넌트지향 프로그래밍 언어이다. 이를 통해 Windows용 앱과 게임(유니티)을 개발할 수 있으며, 크로스플랫폼으로써 모바일 앱(android, ios)과 macOS 앱을 개발할 수도 있다고 한다.</p>
<h3 id="net">.NET</h3>
<p>.NET은 C#이 실행되기 위한 ‘플랫폼(실행 환경 + 라이브러리 + 도구 묶음)’이다. <code>.NET Framwork</code>는 Windows 전용으로 여러 한계가 존재한다. 2010년대 이후로 등장한 <code>.NET Core</code>는 크로스 플랫폼 (Windows / macOS / Linux)이며 오픈소스로 진화하여 제약조건이 많이 완화되었으며, 2020년대 들어 <code>.NET</code>으로 이름을 변경하였다. 현재는 <code>.NET 10</code> 버전이 최신 버전이다.</p>
<h4 id="1-clr-common-language-runtime">1. CLR (Common Language Runtime)</h4>
<p>C# 코드를 실행시켜주는 엔진으로 메모리 관리(GC)와 예외 처리, 그리고 JIT 컴파일을 담당한다.</p>
<h4 id="2-bcl-base-class-library">2. BCL (Base Class Library)</h4>
<p>System.String, System.IO, System.Net, List<T> 같은 라이브러리로 우리가 쓰는 대부분의 클래스가 여기에 포함되어 있다.</p>
<h4 id="3-sdk--cli">3. SDK / CLI</h4>
<p>개발자가 사용하는 도구들로 구성되어 있다고 한다.</p>
<h3 id="hello-world">hello world</h3>
<p>어떤 프로그램을 하더라도 항상 처음에는 &quot;hello world&quot;를 찍어본다. C#에서도 터미널에 찍기 위해 콘솔에 문자를 출력해주는 메서드를 활용하여 찍어준다.</p>
<pre><code class="language-C#">using System;

namespace HelloWorld
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine(&quot;Hello World!&quot;);    
    }
  }
}</code></pre>
<h4 id="1-system-namespace의-class-사용하기">1. System namespace의 class 사용하기</h4>
<h4 id="2-클래스와-기타-네임스페이스를-담는-컨테이너-네임스페이스-지정">2. 클래스와 기타 네임스페이스를 담는 컨테이너 네임스페이스 지정</h4>
<h4 id="3-데이터와-메서드를-담는-컨테이너로-program이라는-이름의-클래스를-지정">3. 데이터와 메서드를 담는 컨테이너로 <code>Program</code>이라는 이름의 클래스를 지정</h4>
<h4 id="4-main-메서드-내부에-있는-코드-실행">4 main 메서드 내부에 있는 코드 실행</h4>
<h4 id="5-console-네임스페이스에-속한-writeline이라는-클래스를-사용하여-helloworld를-출력한다">5. Console 네임스페이스에 속한 WriteLine이라는 클래스를 사용하여 helloworld를 출력한다.</h4>
<h3 id="c-출력">C# 출력</h3>
<p>  C#에서 원하는 값을 출력하기 위해서는 <code>WriteLine()</code>이라는 메서드를 활용할 수 있다. 앞서 우리가 Hello World를 출력하면서 봤듯이 <code>Console.WriteLine(&quot;Hello World~&quot;);</code>이렇게 사용하면 되는 것이다. 다음줄도 똑같이 추가해서 작성해도 된다. 다만 매서드를 한 개 사용할 때마다 개행(\n)이 되므로 유의해야 한다. 개행이 포함되지 않도록 한다면 <code>Console.Write(&quot;Hello World!&quot;)</code>를 사용하면 된다. 또한 숫자나 연산을 넣어도 동작한다. <code>Console.WriteLine(3+3)</code>이렇게 하면 결과는 6이 나오게 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[macOS의 터미널에서 C언어 실습하기]]></title>
            <link>https://velog.io/@songwoo-yu/macOS%EC%9D%98-%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%EC%84%9C-C%EC%96%B8%EC%96%B4-%EC%8B%A4%EC%8A%B5%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@songwoo-yu/macOS%EC%9D%98-%ED%84%B0%EB%AF%B8%EB%84%90%EC%97%90%EC%84%9C-C%EC%96%B8%EC%96%B4-%EC%8B%A4%EC%8A%B5%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 19 Jan 2026 01:56:04 GMT</pubDate>
            <description><![CDATA[<p>오늘부터 정보처리산업기사의 프로그래밍 언어 파트를 시작한다. 여기에는 절차지향 프로그래밍 언어인 C와 객체지향 언어인 Java, 그리고 컴파일 언어를 벗어난 스크립트 언어의 Python을 공부하게 된다.</p>
<p>나의 경우 C는 2021년 봄에 42서울 라피신 과정에서 간단한 shell과 C를 해본적이 있긴 하다. 그러나 제대로 해보진 않았기 때문에 그냥 초짜라고 생각해도 된다. 그 이후에는 회로나 네트워크와 관련된 공부를 더 많이 했으니... 최근에도 JavaScript 기반의 Vue.js나 React, 그리고 Python을 이용한 딥러닝 프로그래밍을 해본 것이 다이다. 어차피 C#과 Spring Boot도 해야 하기에 C와 Java도 공부하긴 해야 했다.</p>
<p>그렇다면 Java의 경우 뭘로 실습할지는 정하진 않았다. 전에 리액트를 하면서 IntelliJ를 사용해봤기에 그걸로 할까, C처럼 그냥 터미널에서 하나하나 해볼까 고민중이다. C의 경우 mac에서 제공하는 clang 컴파일러를 이용하여 컴파일한 후, 생성된 <code>a.out</code>파일을 실행해주면 원하는대로 작동하게 된다.</p>
<h3 id="컴파일러-확인">컴파일러 확인</h3>
<p>기본적으로 mac에서 <code>x code command line</code>을 설치했다면, 다음과 같이 컴파일러가 설치되어 있을 것이다. gcc나 clang의 버전을 먼저 확인해준다.</p>
<pre><code class="language-bash">gcc --version
or
clang --version</code></pre>
<p>macOS는 Apple LLVM 기반 clang을 기본 C 컴파일러로 채택하고 있기 때문에 gcc라고 입력해도 호환용 이름(alias)처럼 작동하여 <code>Apple clang version</code> 이런 식의 출력이 나오게 된다.</p>
<p>그렇다면 gcc와 clang이 무었일까? 앞서 말했듯 둘 다 컴파일러다. C나 Java는 컴파일러 언어라고 한다. 소스코드가 바로 실행되는 것이 아니라 컴파일을 거쳐 생성된 실행 파일을 실행하게 되는 것이다. 속도는 스크립트 언어보다 일반적으로 더 빠르지만, 개발 시 번거러움이 좀 발생한다고 한다. 우리가 대강 소스코드를 컴파일러에 넣어 실행파일을 만든다고 했지만, 뜯어보면 <code>소스 코드(main.c) → 전처리 → 컴파일 → 어셈블 → 링크 → 실행 파일</code>의 과정을 거치게 된다.</p>
<p>gcc는 GNU Compiler Collection의 약자로 리눅스 GNU에서 제공하는 컴파일러로, 소스 코드를 기계어로 변환하는 프로그램이다. clang은 LLVM 프로젝트의 컴파일러인 것이다. 근본적으로 큰 차이는 없다고 봐도 무방하다.</p>
<h3 id="vi-편집기를-이용하여-소스코드-작성">vi 편집기를 이용하여 소스코드 작성</h3>
<p><code>vi hello.c</code>라고 작성하면 hello.c라는 파일을 생성하고 편집기로 진입하게 된다. <code>i</code>를 눌러 편집 모드로 변환하고 소스코드를 작성한다. 작성이 완료되었다면 <code>esc</code>를 누른 후, <code>:wq</code>를 작성한 후 엔터를 눌러주면 저장된다.</p>
<h3 id="컴파일">컴파일</h3>
<p><code>gcc hello.c</code> or <code>clang hello.c</code>를 통해 컴파일을 해준다. 그러면 <code>a.out</code>이라는 기본 실행파일이 생성된다. 따로 지정해준 이름이 없기에 assembler output의미로 생성되는 파일인 것이다. <code>gcc main.c -o test</code>와 같이 output 옵션으로 이름을 지정해주면 test라는 이름의 실행파일이 생성된다.</p>
<h3 id="실행">실행</h3>
<p><code>./a.out</code>과 같이 상대경로와 실행파일명을 적어주면 실행된다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[NCA 기출문제 풀이 (3) 81~121]]></title>
            <link>https://velog.io/@songwoo-yu/NCA-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4-3-81121</link>
            <guid>https://velog.io/@songwoo-yu/NCA-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4-3-81121</guid>
            <pubDate>Tue, 13 Jan 2026 01:26:52 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>81.서버 패스워드에 대한 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 초기 패스워드는 서버 생성 시 생성한 인증키를 가지고 확인할 수 있다.
2) 서버에서 패스워드를 변경 후 패스워드를 까먹은 경우 기존에 생성한 인증키를 통해 패스워드를 확인할 수 있다.
3) 서버 생성 시 생성한 인증키는 다른 인증키로 교체할 수 있다.
4) 서버 초기 패스워드는 복잡한 문자열로 부여한다.</p>
<p>사용자가 서버 내에서 패스워드를 변경한 경우 인증키를 사용해 패스워드를 확인할 수 없어, 패스워드 재설정(초기화)절차가 필요하다.</p>
<blockquote>
<p>82.SSD 스토리지의 크기가 400GB일 때 MAX IOPS는 얼마인가?</p>
</blockquote>
<p>1) 2000
2) 8000
3) 16000
4) 20000</p>
<p>400GB SSD의 IOPS 계산은 40을 곱하는 것이다. 따라서 최대값은 16000이 된다.</p>
<blockquote>
<p>83.VPC 환경 / Classic 2세대 서버의 High Memory 서버 스펙 중 생성 가능한 서버 스펙은 무엇인가요?</p>
</blockquote>
<p>1) vCPU 4개, RAM 8GB
2) vCPU 8개, RAM 8GB
3) vCPU 2개, RAM 8GB
4) vCPU 16개, RAM 128GB</p>
<p>말그대로 높은 메모리 용량을 필요로 하는 것이다. 8배라고 생각하면 된다. vCPU 16개, RAM 128GB</p>
<blockquote>
<p>84.서버 생성 시 선택 가능한 스토리지 종류에 대한 설명 중 틀린 것은?</p>
</blockquote>
<p>1) SSD 타입은 저장장치가 SSD인 디스크이다.
2) HDD 타입은 저장장치가 SATA인 디스크이다.
3) 서버 타입에 따라 NVMe 디스크를 사용할 수 있다.
4) SSD 타입은 MAS IOPS가 지정된다.</p>
<p>SATA외 SAS 방식도 지원된다. HDD로 표현되기에 한정할 수 없다.</p>
<blockquote>
<p>85.VPC 환경 / Classic 2세대 서버의 High CPU 서버 스펙 중 생성 가능한 서버 스펙은 무엇인가요?</p>
</blockquote>
<p>1) vCPU 4개, RAM 8GB
2) vCPU 8개, RAM 8GB
3) vCPU 2개, RAM 8GB
4) vCPU 16개, RAM 128GB
이번에는 CPU의 용량이 높은 비율을 골라주는데, 메모리의 1/2이라고 생각하면 된다. vCPU 4개, RAM 8GB</p>
<blockquote>
<p>86.VPC 환경에서 사용 중인 VM에 ACG 관리 작업으로 맞는 것을 고르시오.</p>
</blockquote>
<p>1) VM 기동 중에는 ACG 변경이 불가능하므로 VM을 정지시킨 후 ACG를 변경한다.
2) ACG는 서버 NIC에 매핑된다.
3) 하나의 서버는 최대 2개의 ACG와 매핑될 수 있다.
4) ACG는 VM당 1개만 선택할 수 있으므로 타 VM과 공유하여 사용하지 않는 것이 좋다.</p>
<p>앞서도 많이 봤듯이 ACG는 서버 NIC에 매핑된다.</p>
<blockquote>
<p>87.Linux용 Init Script로 생성 불가능한 스크립트 언어는?</p>
</blockquote>
<p>1) bash
2) perl
3) python
4) php</p>
<p>php는 웹 서버 환경에서 주로 사용되는 언어로, init scrip로는 일반적으로 지원되지 않는다.</p>
<blockquote>
<p>88.Bare-Metal 서버 기능 설명으로 맞는 것은?</p>
</blockquote>
<p>1) 스토리지 RAID 설정은 RAID 1, RAID 1+0을 제공한다.
2) 운영체제로 Oracle Linux를 지원한다.
3) 로컬 디스크 추가가 가능하다.
4) 서버 정지 시에는 스토리지 사용 요금만 과금한다.</p>
<p>베어메탈 서버는 centos, oracle, windows 등 여러 운영체제를 지원한다.</p>
<blockquote>
<ol start="89">
<li>Object Storage에 대한 설명 중 틀린 것은?</li>
</ol>
</blockquote>
<p>1) 파일 단위의 데이터 저장, 공유, 배포가 가능하여 콘텐츠를 저장하고, 다른 사용자에게 공유하거나 배포할 수 있습니다.
2) 대용량 데이터의 저장소로 활용할 수 있습니다.
3) 네이버 클라우드 플랫폼 사용자가 아닌 외부 사용자에게 파일 접근 권한을 제공하기 위해서는 반드시 &quot;폴더 공개 하기&quot; 기능을 사용해야 합니다.
4) CDN 상품과 연동하여 사용할 수 있습니다.</p>
<p>파일 단위로도 공개할 수 있다. 굳이 폴더 단위로 공개할 필요는 없다.</p>
<blockquote>
<p>90.서버 스토리지에 대한 설명으로 맞는 것은?</p>
</blockquote>
<p>1) 부팅 스토리지가 HDD인 경우, 추가 스토리지로 HDD만 추가할 수 있다.
2) VM이 운영 중인 상태에서도 Disk 변경이 가능하다.
3) 디스크의 사이즈를 기존보다 크게만 변경이 가능하다.
4) High-Memory, Bare-Metal 서버의 경우 스토리지 추가가 지원되지 않는다.</p>
<p>계속 나오지만 디스크 축소는 불가능하고 확대(크게)만 가능하다.</p>
<blockquote>
<p>91.백업 서비스 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 보관 주기는 백업 주기의 최소 2배 이상이 되어야 합니다.
2) 증분 백업은 전체 백업 이후 백업 디렉토리 내 변경된 데이터만 백업하는 방식이다.
3) 백업된 데이터는 최소 1주부터 52주까지 보관이 가능합니다.
4) 전체 백업은 백업 디렉토리의 모든 데이터를 백업합니다.</p>
<p>백업된 데이터는 7일부터 365일 범위에서 자유롭게 설정할 수 있다. 52주는 364일이기에 1일 더 보관이 가능하다. 3) 백업된 데이터는 최소 1주부터 52주까지 보관이 가능합니다.</p>
<blockquote>
<p>92.네이버 클라우드 플랫폼 백업 상품의 경우, 백업 데이터 보관 기간으로 알맞은 것은?</p>
</blockquote>
<p>1) 최소 1일부터 최대 4주
2) 최소 7일부터 최대 24주
3) 최소 15일부터 최대 36주
4) 최소 30일부터 최대 1년</p>
<p>7일에서 365일까지 자유롭게 백업 데이터를 보관할 수 있다. 3) 최소 15일부터 최대 36주</p>
<blockquote>
<p>93.다음 상품 중 Networking 카테고리 상품이 아닌 것은 무엇인가요?</p>
</blockquote>
<p>1) IPSec VPN
2) Load Balancer
3) NAT Gateway
4) SSL VPN</p>
<p>SSL VPN은 보안 카테고리에 속한다.</p>
<blockquote>
<p>94.다음 중 VPC에서 사용할 수 없는 IP 대역은 무엇인가요?</p>
</blockquote>
<p>1) 10.0.0.0/16
2) 192.168.0.0/24
3) 172.16.0.0/16
4) 172.255.0.0/24</p>
<p>VPC 사설 IP 대역
10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8)
172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12)
192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16)
답) 172.255.0.0/24</p>
<blockquote>
<p>95.Classic 환경에서 서버에 부착된 하나의 NIC에 두 개 이상의 IP를 부여하였을 때 발생할 수 있는 상황은?</p>
</blockquote>
<p>1) 기존 IP로는 통신이 되나 추가된 IP로 통신이 되지 않는다.
2) 추가된 IP 뿐만 아니라 기존 IP도 통신이 되지 않는다.
3) 서버가 강제 정지된다.
4) 기존 IP는 통신이 안되고 추가된 IP로만 통신이 된다.</p>
<p>클래식 환경에서는 하나의 IP만 정상적으로 동작할 수 있도록 설계되어 있어서, 모두 다 통신할 수 없게 된다.</p>
<blockquote>
<ol start="96">
<li>VOD Transcoder에 대한 설명 중 틀린 것은?</li>
</ol>
</blockquote>
<p>1) Preser은 1~5까지 설정 가능하다.
2) Codec는 H.264만 지원한다.
3) Thumbnail를 자동 생성한다.
4) Output 경로는 File Storage와 Object Storage에 저장할 수 있다.</p>
<p>썸네일 자동 생성 기능이 VOD Transcoder에는 존재하지 않는다.</p>
<blockquote>
<ol start="97">
<li>다음 중 VPC에서 사용할 수 없는 IP 대역은 무엇인가요?</li>
</ol>
</blockquote>
<p>1) 10.0.0.0/8
2) 192.168.1.0/16
3) 172.16.0.0/24
4) 192.168.0.0/24</p>
<p>답) 10.0.0.0/8</p>
<blockquote>
<ol start="98">
<li>VPC 환경에서는 다양한 방식의 로드밸런서를 제공하고 있습니다. 네이버 클라우드 플랫폼에서 제공하고 있지 않은 로드밸런서 방식은 무엇인가요?</li>
</ol>
</blockquote>
<p>1) 애플리케이션 로드밸런서
2) 네트워크 로드밸런서
3) 네트워크 프록시 로드밸런서
4) 애플리케이션 프록시 로드밸런서</p>
<p>애플리케이션 프록시 로드밸런서는 존재하지 않는다.</p>
<blockquote>
<ol start="99">
<li>다음 중 CDN+ 설명 중 틀린 것은?</li>
</ol>
</blockquote>
<p>1) CDN+는 HTTP/HTTPS 프로토콜을 통해 다양한 원본 서버와의 콘텐츠 연동을 지원합니다.
2) 원본 서버로 고객이 보유 중인 다양한 웹 서버 및 네이버 클라우드 플랫폼의 Storage, Server를 선택할 수 있습니다.
3) HTTPS로 웹 서비스를 제공하는 경우 콘텐츠가 HTTP로 호출되면 서비스가 불가능합니다.
4) 레퍼러로 등록된 도메인 기준 접근 허용 기능을 제공합니다.</p>
<p>CDN+는 HTTP, HTTPS 프로토콜을 모두 지원하기에 둘 다 호출이 가능하다.</p>
<blockquote>
<ol start="100">
<li>다음에서 설명하는 기능은 어떤 상품을 설명하는 것일까요? 방화벽과 같이 ACL을 설정하는 외부의 네트웍과 연결 시 네이버 클라우드 플랫폼내에 있는 다수의 서버들이 하나의 공인 IP로 해당 외부 네트웍에 접근할 수 있게 해주며, Private Subnet에서 외부 인터넷으로 연결이 필요할 때 필수적인 상품</li>
</ol>
</blockquote>
<p>1) Load Balancer
2) IPSec VPN
3) NAT Gateway
4) API Gateway</p>
<p>네트워크 게이트웨이는 프라이빗 서브넷에 속한 여러 서버가 하나의 공인 ip를 통해 외부 인터넷을 접근할 수 있게 해주는 서비스이다.</p>
<blockquote>
<p>101.네트워크 로드밸런서의 특징으로 틀린 것은 무엇인가요?</p>
</blockquote>
<p>1) 별도의 설정 없이 Client IP 확인이 가능하다.
2) 분배 알고리즘은 Source IP Hash와 Round Robin 방식만 제공한다.
3) 로드밸런서를 사용하기 위해 서버에 별도의 설정이 필요하다.
4) HTTP, HTTPS 프로토콜을 지원하지 않는다.</p>
<p>로드밸런서가 트래픽을 분배해주기 때문에 별도의 추가 설정이 필요하지 않다.</p>
<blockquote>
<ol start="102">
<li>VPC 환경에서 서버를 한 대 생성하였다. 서버 Network Interface에 대한 설명 중 맞는 것은?</li>
</ol>
</blockquote>
<p>1) 서버 Network Interface는 최대 3개까지 만들 수 있다.
2) Network Interface 하나에 여러 개의 IP를 부여할 수 있다.
3) NIC에는 해당 서버를 처음 생성할 때 선택한 Subnet 범위의 IP만 할당할 수 있다.
4) 원하는 사설IP 설정은 불가능하며, DHCP로 자동 할당만 가능하다.</p>
<p>일반적으로 VPC 환경에서 서버에 부착할 수 있는 네트워크 인터페이스의 최대 개수는 3개이다.</p>
<blockquote>
<p>103.네이버 클라우드 플랫폼 Classic 환경의 로드밸런서와 유사한 VPC 환경에서의 로드밸런서는 어떤 방식인가요?</p>
</blockquote>
<p>1) 애플리케이션 로드밸런서
2) 네트워크 로드밸런서
3) 네트워크 프록시 로드밸런서
4) 애플리케이션 프록시 로드밸런서</p>
<p>네트워크 프록시 로드밸런서는 Classic 환경의 로드 밸런서와 동일하게 L4계층에서 동작한다.</p>
<blockquote>
<p>104.하나의 VPC에 ACG를 최대 몇 개까지 생성 가능한가요?</p>
</blockquote>
<p>1) 5개
2) 100개
3) 300개
4) 500개</p>
<p>최대 ACG 생성 개수는 500개이다.</p>
<blockquote>
<p>105.네이버 클라우드 플랫폼의 VPC 환경에서 ACG에 대한 설명으로 틀린 것은?</p>
</blockquote>
<p>1) 서버와 연결되어 있는 맵핑 정보를 변경할 수 있다.
2) VPC에 의존적이다.
3) White List 방식의 방화벽이다.
4) Inbound에 대해서만 룰 적용이 가능하다.</p>
<p>인바운드(수신)과 아웃바운드(송신) 트래픽 모두에 대해 각각 50개의 규칙을 설정할 수 있다.</p>
<blockquote>
<p>106.네이버 클라우드 플랫폼 VPC 환경의 로드밸런서 상품의 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 22번 포트도 로드밸런싱할 수 있다.
2) VPC 환경에서는 3가지의 로드밸런서가 제공된다.
3) 부하처리 성능에 따라 Small/Medium/Large 중 스펙을 선택할 수 있다.
4) Proxy 방식의 로드밸런서를 사용하면, 별도의 설정없인 클라이언트의 IP를 확인할 수 없다.</p>
<p>네트워크 프록시 로드밸런서에서는 기본적으로 서버에서 클라이언트의 실제 IP가 아닌 로드밸런서의 IP가 보인다. 다만 프록시 프로토콜과 같은 설정을 통해 클라이언트 Ip도 확인할 수 있다.</p>
<blockquote>
<p>107.라이브 스트리밍 서비스를 진행하는데 필요한 모든 Back-end 기능을 지원하며, NAVER Cloud Platform CDN 연동을 통해 원활한 라이브 진행을 할 수 있는 상품은?</p>
</blockquote>
<p>1) Clova Face Recognition
2) Live Station
3) VOD Transcoder
4) Image Optimizer</p>
<p>라이브 세션은 실시간 라이브 스트리밍 서비스 전용 상품이다.</p>
<blockquote>
<ol start="108">
<li>CDN+ 관련 용어 설명 중 틀린 것은?</li>
</ol>
</blockquote>
<p>1) 서비스도메인 : 서비스에서 콘텐츠 전송 시 사용자에게 노출되는 도메인
2) Ignore Query String : CDN 서비스가 원본 서버에 요청할 떄 &quot;?id=1234&quot;와 같이 URL
에 포함된 GET 파라미터를 제거한 후에 요청
3) Referrer Domain : 콘텐츠가 지정된 도메인에만 제공되게 하여 다른 사이트에서 참조되는 것을 방지
4) Cache Expiry : 사용자 요청에 의해 요구되는 콘텐츠를 빠르게 제공하기 위해 캐시 서버에 저장</p>
<p>캐시 익스피리는 캐시 서버에 저장된 콘텐츠의 유효성 기간을 결정하는 설정이다.</p>
<blockquote>
<p>109.비공인 IP를 가진 다수의 서버에게 대표 공인 IP를 이용하여 외부 접속이 가능하게 해주는상품은?</p>
</blockquote>
<p>1) API Gateway
2) IP Gateway
3) NAT Gateway
4) Global Route Manager</p>
<p>계속 봐왔듯 프라이빗 ip를 가진 서버에서는 NAT Gateway를 통해 외부 인터넷과 연결할 수 있다.</p>
<blockquote>
<p>110.VPC는 하나의 독립된 네트웍을 구성하게 됩니다. 따라서 VPC를 다수 생성하게 되면 VPC간 통신은 되지 않는데 VPC간 통신을 가능하게 해주는 서비스는 무엇인가요?</p>
</blockquote>
<p>1) Private Subnet
2) Public Subnet
3) VPC Peering
4) Route Table</p>
<p>VPC 피어링은 서로 다른 VPC 간의 네트워크 트래픽을 직접적으로 교환할 수 있도록 해주는 서비스이다.</p>
<blockquote>
<p>111.네이버 클라우드 플랫폼 NAS에 대한 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 볼륨은 최소 500GB에서 최대 10TB까지이다.
2) 볼륨 크기에 따라 IOPS가 달라진다.
3) 볼륨의 확장 축소는 100GB 단위로 가능하다.
4) 볼륨 개수는 계정 당 20개로 제한된다.</p>
<p>볼륨의 생성 단위에는 별도의 제한이 없다.</p>
<blockquote>
<p>112.오브젝트 스토리지의 설명 중 맞는 것은?</p>
</blockquote>
<p>1) 오브젝트 스토리지는 2개의 인증키 사용이 가능합니다.
2) 생성된 버킷 이름은 변경할 수 있습니다.
3) 파일에 대한 공개 여부는 개별 파일에서 설정합니다.
4) 네이버 클라우드 플랫폼의 다른 계정에 공유할 수 없습니다.</p>
<p>파일 단위로 설정이 가능하다. 굳이 폴더 단위로 할 필요는 없다.</p>
<blockquote>
<p>113.다음 중 클라우드의 비용과 관련이 가장 높은 개념은 무엇인가요?</p>
</blockquote>
<p>1) TCO (총 소요 비용)
2) ROI (투자 자본 수익률)
3) CAPEX (자본적 지출)
4) OPEX (운영 비용)</p>
<p>운영 비용이 실제 클라우드 비용과 관련이 높다.</p>
<blockquote>
<p>114.Cloud DB 상품에서 제공하고 있지 않은 DBMS는?</p>
</blockquote>
<p>1) Oracle
2) MS-SQL
3) MySQL
4) Redis</p>
<p>오라클은 데이터베이스를 제공하지 않는다.</p>
<blockquote>
<p>115.네이버 클라우드 플랫폼의 보안 상품 중 없는 상품은? &gt;&gt; Data Safer로 변경해서 나옴. Web safer 삭제</p>
</blockquote>
<p>1) App Safer
2) Web Safer
3) File Safer
4) Site Safer</p>
<p>Web(데이터) Safer는 공식 보안 상품 목록에 존재하지 않는다.</p>
<blockquote>
<ol start="116">
<li>네이버 클라우드 플랫폼의 GPU 상품에 대한 설명 중 틀린 것은?</li>
</ol>
</blockquote>
<p>1) 최대 12개의 GPU를 하나의 VM에 할당할 수 있다.
2) 서버를 정지시켜도 요금이 발생한다.
3) Linux OS를 지원한다.
4) T4, V100 등의 GPU 카드가 제공된다.</p>
<p>최대 8개를 할당할 수 있다.</p>
<blockquote>
<p>117.다음 중 오브젝트 스토리지 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 버킷 공개하기는 버킷 안의 폴더 및 파일 정보 조회 및 업로드가 가능하다.
2) 파일 공개하기는 파일 정보 조회 및 다운로드/업로드가 가능하다.
3) 버킷 권한은 목록 조회, 업로드, ACL 조회, ACL 수정이 가능하다.
4) 파일 권한은 다운로드, ACL 조회, ACL 수정이 가능하다.</p>
<p>파일공개하기는 업로드가 불가능하다.</p>
<blockquote>
<p>118.네이버 클라우드 플랫폼 VPC 환경에서 제공되는 GPU 서버의 특징으로 틀린 것은?</p>
</blockquote>
<p>1) NVDIA T4, V100 이용이 가능하다.
2) 서버 1대당 꽂을 수 있는 T4의 최대 개수는 2개이다.
3) 서버 1대당 꽂을 수 있는 V100의 최대 개수는 4개이다.
4) Grid 기술을 사용할 수 있다.</p>
<p>T4는 최대 2개 가능하며, V100은 8개까지 가능하다.</p>
<blockquote>
<p>119.NAS 상품 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 자체 스냅샷 기능이 제공된다.
2) Linux Server와 Windows Server 모두 NAS를 마운트할 수 있습니다.
3) NAS 볼륨은 네이버 클라우드 플랫폼 인프라 내에 있는 서버에서만 마운트 가능합니다.
4) NAS는 용량 한도 없이 사용할 수 있다.</p>
<p>NAS는 최소 500GB~10TB까지 용량 제한이 있다.</p>
<blockquote>
<ol start="120">
<li>다음 중 Global Route Manager의 로드밸런싱 타입이 아닌 것은?</li>
</ol>
</blockquote>
<p>1) Weighted
2) Round Robin
3) Geolocation
4) Source IP Hash</p>
<p>글로벌 라우트 매니저에서는 소스 아이피 해쉬 방식이 지원되지 않는다.</p>
<blockquote>
<ol start="121">
<li>내 서버 이미지에 대한 설명으로 틀린 것은?</li>
</ol>
</blockquote>
<p>1) 내 서버 이미지가 생성되는 동안 서버는 일시적으로 &#39;복제중&#39; 상태이나 서버는 정상적으로 운영된다.
2) 내 서버 이미지를 다른 리전으로 복제할 수 있다.
3) 내 서버 이미지는 오토스케일링의 Launch Configuration에서도 이용이 가능하다.
4) 내 서버 이미지를 이용해 서버를 생성할 때, 원본 서버의 부팅스토리지 종류와 동일하게 생성된다.</p>
<p>원본 서버의 부팅 스토리지 종류와 동일하게 생성된다는 보장은 없다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[NCA 기출문제 풀이 (2) 41~80]]></title>
            <link>https://velog.io/@songwoo-yu/NCA-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4-1-4180</link>
            <guid>https://velog.io/@songwoo-yu/NCA-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4-1-4180</guid>
            <pubDate>Wed, 07 Jan 2026 06:59:36 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>41.네이버 클라우드 플랫폼에 서버를 생성하고 네트워크 구성을 하였을 때, 그에 대한 설명으로 틀린 것은 무엇인가요?</p>
</blockquote>
<p>1) 서버는 기본적으로 10.xxx / 172.16xx / 192.168.xx 대역 중 하나의 사설 IP를 부여 받을수 있다.
2) 서버의 사설망 네트워크 대역은 최소 /28부터 최대 /16 범위까지 설정 가능하다.
3) Public IP를 연결하면 서버에서 ifconfig/ipconfig 명령어를 칠 시 Public IP가 보인다.
4) 서버는 기본적으로 1Gps 대역폭의 인터페이스를 생성한다.</p>
<p>서버 내부에서 ifconfig, ipconfig를 실행하면 사설 ip만 확인이 가능하다.</p>
<blockquote>
<ol start="42">
<li>다음 상품 중 Media 카테고리 상품이 아닌 것은 무엇인가요?</li>
</ol>
</blockquote>
<p>1) Live Station
2) VOD Station
3) VOD Transcoder
4) Elastic Transcoder</p>
<p>Elastic Transcoder은 AWS의 서비스명이다.</p>
<blockquote>
<p>43.Load Balancer 상품에 대한 설명 중 잘못된 것은?</p>
</blockquote>
<p>1) Classic 플랫폼에서의 헬스체크 주기는 6초이다.
2) Classic 플랫폼에서는 3번 응답이 없는 경우 Unbind한다.
3) VPC 플랫폼에서 한 대의 서버는 여러 Target Group에 포함될 수 없다.
4) VPC 플랫폼에서는 Target Group에서 헬스체크 주기를 수정할 수 있다.</p>
<p>VPC 환경에서 한 대의 서버(타겟)은 여러 타겟 그룹에 포함될 수 있다.</p>
<blockquote>
<p>44.네이버 클라우드 플랫폼 VPC의 NACL에 대한 설명으로 틀린 것은?</p>
</blockquote>
<p>1) Subnet 단위로 적용된다.
2) Allow Deny 규칙 모두 지원한다.
3) Stateful 방식이다.
4) 우선순위에 따라 규칙을 반영한다.</p>
<p>NACL은 stateful이 아닌 stateless 방식(상태 비저장)으로 인바운드와 아웃바운드에 대한 별도의 규칙을 명시해야 한다. 반면 ACG는 상태 저장 방식이다.</p>
<blockquote>
<p>45.Load Balancer로 연결 가능한 프로토콜이 아닌 것은 무엇인가요?</p>
</blockquote>
<p>1) TCP
2) UDP
3) HTTPS
4) SSL</p>
<p>UDP는 기본 로드 밸런서에서 사용이 불가하다.</p>
<blockquote>
<p>46.VPC 환경에서 Load Balancer를 생성하려고 합니다. Target Group의 디폴트 포트 헬스체크 주기는 얼마인가요?</p>
</blockquote>
<p>1) 6초
2) 10초
3) 30초
4) 1분</p>
<p>로드 밸런서를 생성할 때, 타겟 그룹의 헬스체크 주기는 30초이다.</p>
<blockquote>
<p>47.네이버 클라우드 플랫폼의 VPC 환경에서 서버 NIC 하나에 적용할 수 있는 ACG의 개수는?</p>
</blockquote>
<p>1) 2개
2) 3개
3) 4개
4) 5개</p>
<p>서버 NIC 하나에 적용할 수 있는 ACG 개수는 3개이다.</p>
<blockquote>
<p>48.네이버 클라우드 플랫폼 로드밸런서에서 제공되지 않는 로드 분배 알고리즘은?</p>
</blockquote>
<p>1) Round Robin
2) Weighted Round Robin
3) Least Connection
4) Source IP Hash</p>
<p>Weighted Roudn Robin(가중 라운드 로빈)은 네이버 클라우드에서는 제공하지 않는다.</p>
<blockquote>
<p>49.네이버 클라우드 플랫폼 VPC 환경에서 제공하는 로드밸런서 중 SSL 인증을 지원하는 로드밸런서는 무엇인가요?</p>
</blockquote>
<p>1) 애플리케이션 로드밸런서
2) 네트워크 로드밸런서
3) 하이브리드 로드밸런서
4) 애플리케이션 프록시 로드밸런서</p>
<p>애플리케이션 로드밸런서는 HTTPS(SSL) 프로토콜을 지원하며, 콘솔에서 SSL 인증서를 적용할 수 있다.</p>
<blockquote>
<p>50.다음 로드밸런서 관련 설명 중 틀린 것은?</p>
</blockquote>
<p>1) HTTP Keep-Alive : 연결된 Connection을 일정시간 동안 유지하면서 다시 연결을 요청할 때 기존에 연결된 Connection을 재사용하는 옵션
2) Connection ilde Timeout : 로드밸런서와 연결된 Connection을 유지하는 시간으로 해당 시간이 지나면 Connection이 강제로 Close되어 연결 해제
3) Proxy Protocol : 로드밸런서에서 TCP, SSL 프로토콜 이용 시, Proxy 환경에서 Connection을 요청하는 클라이언트의 IP 주소를 확인할 수 있는 프로토콜
4) 로드밸런서에서 발급된 CNAME을 고객이 보유한 CNAME과 ROOT DOMAIN에 등록가능</p>
<p>CNAME 레코드는 반드시 서브도메인에만 등록할 수 있으며, 루트 도메인에는 등록이 불가능하여 반드시 A레코드만 허용된다.</p>
<blockquote>
<p>51.네이버 클라우드 플랫폼 VPC의 Private Subnet에 대한 설명으로 틀린 것은 무엇인가요?</p>
</blockquote>
<p>1) Private Subnet에 있는 서버들은 공인 IP 부여를 할 수 없습니다.
2) Private Subnet에 있는 서버들은 Internet Gateway를 통해 외부 인터넷으로 나갈 수 있습니다.
3) 네이버 클라우드 플랫폼의 일부 상품들은 기본적으로 Public Subnet에 위치해야 합니다.
4) Private Subnet을 Public Subnet으로 전환할 수 없습니다.</p>
<p>프라이빗 서브넷에 있는 서버들은 인터넷 게이트웨이가 아닌 NAT Gateway를 통해서만 외부와 통신할 수 있다.</p>
<blockquote>
<p>52.네이버 클라우드 플랫폼에서 하나의 계정으로 만들 수 있는 최대 VPC 갯수는 몇개인가요?</p>
</blockquote>
<p>1) 1개
2) 2개
3) 3개
4) 4개</p>
<p>그냥 최대 VPC 개수는 3개이다.</p>
<blockquote>
<p>53.네이버 클라우드 플랫폼 Block Storage에서 제공하는 기능이 아닌 것은?</p>
</blockquote>
<p>1) Detach / Attach 기능
2) Snapshot 기능
3) Disk 용량 증설
4) Disk 용량 축소</p>
<p>블록 스토리지는 앞서도 말했듯이 용량 증설만 가능하고 축소는 불가능하다.</p>
<blockquote>
<p>54.Auto Scaling 구성 시 설정할 수 있는 항목이 아닌 것은?</p>
</blockquote>
<p>1) NAS
2) ACG
3) Load Balancer
4) VPC / Subnet</p>
<p>NAS는 오토 스케일링 그룹에 포함되지 않는다.</p>
<blockquote>
<p>55.네이버 클라우드 플랫폼의 VPC 환경에서 제공하는 로드밸런서 중 세션 유지가 필요한 TCP 기반 애플리케이션에 이용할 수 있는 로드밸런서는 무엇인가요?</p>
</blockquote>
<p>1) 애플리케이션 로드밸런서
2) 네트워크 로드밸런서
3) 네트워크 프록시 로드밸런서
4) 애플리케이션 프록시 로드밸런서</p>
<p>네트워크 프록시 로드밸런서는 프록시 방식의 통신을 제공하여 세션 유지가 필요한 TCP 기반 애플리케이션에 사용되는 로드밸런서이다.</p>
<blockquote>
<p>56.System Security Checker에서 Linux 서버의 점검 항목이 아닌 것은?</p>
</blockquote>
<p>1) UMASK 설정관리
2) Guest 계정 사용 제한
3) 홈 디렉토리 권한 설정
4) Anonymous FTP 비활성화</p>
<p>게스트 계정은 주로 윈도우즈 환경에서 존재하며, 리눅스에서는 기본적으로 게스트 계정이 활성화되어 있지 않다. 그렇기에 checker 점검 항목에 포함되지 않는다.</p>
<blockquote>
<p>57.네이버 클라우드 플랫폼 CLI를 이용하고자 할 때 사용하는 명령어는 무엇인가요?</p>
</blockquote>
<p>1) Ncpcli
2) Ncloud
3) Ncloudcli
4) Ncli</p>
<p>네이버 플랫폼 CLI를 이용하기 위해서는 Ncloud를 입력해야 한다.</p>
<blockquote>
<p>58.다음 중 클라우드의 특징에 대해 잘못 설명한 것은 무엇인가요?</p>
</blockquote>
<p>1) 동일한 네트웍 사용량을 기준으로 보면 Legacy 인프라보다 클라우드가 저렴하다.
2) Scale-In/Out이 Legacy 인프라보다 자유롭다.
3) 요금은 사용량에 따른 종량제를 기본으로 하지만 상품에 따라 정액제 요금도 존재한다.
4) 사용할 수 있는 서버 OS가 제한한다</p>
<p>동일한 네트웍 사용량이 얼마냐에 따라 달라진다. 초고용량을 사용한다면 당연히 레거시 인프라가 더 저렴하다.</p>
<blockquote>
<p>59.네이버 클라우드 플랫폼에는 다양한 상품들이 카테고리로 그룹화되어 있습니다.  &quot;VMware on Ncloud&quot; 상품은 어떤 카테고리에 속해 있을까요?</p>
</blockquote>
<p>1) Compute
2) Server
3) Management
4) Hybrid &amp; Private Cloud</p>
<p>온프라미스와 클라우드 환경을 연동하거나 프라이빗 클라우드 환경을 필요로 하는 대상을 위한 하이브리드 프라이빗 클라우드이다.</p>
<blockquote>
<p>60.다음 중 네이버 클라우드 플랫폼의 Live Station의 특징이 아닌 것은?</p>
</blockquote>
<p>1) 방송 서비스 구현에 꼭 필요한 Thumbnail image를 추출하고 직접 관리할 수 있습니다.
2) Live Station 생성 시 CDN을 동시에 생성할 수 없기에 별도로 생성 후 따로 연동해줘야 합니다.
3) Live Station은 사용자가 라이브 방송 도중 일시정지를 하고 다시 재생이 가능하도록 타임머신(Time Shift)기능을 제공합니다.
4) 라이브 방송 종료 후, 녹화 영상을 저장할 수 있습니다.</p>
<p>라이브 스테이션은 채널 생성 시 CDN을 동시에 생성하고 연동할 수 있다.</p>
<blockquote>
<p>61.네이버 클라우드 플랫폼 CDN+에 대한 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 사용량에 따라 요금이 다르다.
2) 요금은 일 평균 전송량 X 일 수로 계산된다.
3) 월 전송량 요금에 월 요청 수 요금이 합산되어 진다.
4) CDN+와 GCDN은 요금 체계가 다르다.</p>
<p>평균 전송량에 일수를 곱하는 것이 아니라 한달 동안의 누적 사용량을 합산하여 계산한다.</p>
<blockquote>
<ol start="62">
<li>Application 서비스 각각의 서비스 명과 설명 중 잘못된 것은?  &gt; 4번 Clova 서비스 이름으로 변형해서 나옴 </li>
</ol>
</blockquote>
<p>1) Clova Speech Recognition : 사람의 목소리를 텍스트로 바꿔주어 다양한 음성인식 서비스에 활용 가능한 서버
2) Clova Face Recognition : 이미지 속의 얼굴을 감지하고 인식하여 얻은 다양한 정보를 제공할 수 있는 서비스
3) Papago NMT : 입력한 텍스트를 대규모 학습 데이터를 기반으로 여러 나라의 언어로 지동 번역해주는 서비스
4) object Detection : 입력한 텍스트를 자연스러운 목소리로 재생해주는 음성 합성 API서비스</p>
<p>입력한 텍스트를 자연스러운 목소리로 재생해주는 음성 합성 API는 Clova Speech Synthesis(TTS) 서비스이다. 따라서 object detection이 나오든 뭐가 나오든 speech synthesis가 아니면 다 틀린 서술이다.</p>
<blockquote>
<p>63.네이버 클라우드 플랫폼 App Safer에서 앱 실행 환경 탐지가 가능한 부분이 아닌 것은?</p>
</blockquote>
<p>1) 루팅 탐지
2) 애플리케이션 변조 탐지
3) 메모리 변조 탐지
4) APK 추출 탐지</p>
<p>apk 추출 탐지는 사용자가 앱 파일을 외부로 복사하거나 추출하는 행위다.</p>
<blockquote>
<p>64.VPC 플랫폼 상의 상품 의존성 관계를 [상품 : 의존성] 형태로 나타냈을 때, 올바르지 않은 관계는?</p>
</blockquote>
<p>1) VPC : 리전
2) Subnet : Zone
3) Init Script : Zone
4) Cloud DB : Multi Zone</p>
<p>init script는 서버(노드) 생성 시 실행되는 스크립트로 zone과는 의존성이 없다. </p>
<blockquote>
<p>65.네이버 클라우드 플랫폼에서는 다양한 소통 채널을 통해 사용자와 소통을 진행하고 있습니다. 
현재 네이버 클라우드 플랫폼에서 운영하고 있지 않은 채널은 무엇인가요?</p>
</blockquote>
<p>1) 블로그
2) 유튜브
3) 페이스북
4) 트위터</p>
<p>네이버 클라우드는 트위터 채널을 운영하지 않는다.</p>
<blockquote>
<p>66.Cloud Log Analytics에 저장할 수 있는 최대 로그 용량은?</p>
</blockquote>
<p>1) 100GB
2) 200GB
3) 300GB
4) 사용자가 설정할 수 있다.</p>
<p>스탠다드 요금제 기준 최대 100기가로 설정되어 있다.</p>
<blockquote>
<p>67.Outbound Mailer에서 메일 제목과 본문에서 스프레드 시트나 DB의 열 데이터를 순차적으로 입력하기 위한 기능은?</p>
</blockquote>
<p>1) 변수 치환
2) 대량 변수 입력
3) 치환 태그
4) DM 입력</p>
<p>치환태그는 메일 제목이나 본문에 {{변수명}}과 같은 형태로 입력하여 스프레드 시트나 데이터베이스의 각 열 데이터를 개별 메일에 자동으로 삽입하는 기능이다.</p>
<blockquote>
<p>68.Cloud Log Analytics의 최대 저장 기간은?</p>
</blockquote>
<p>1) 30일
2) 120일
3) 180일
4) 사용자가 설정할 수 있다.</p>
<p>네이버 클라우드의 클라우드 로그 아날리틱스 서비스에서 저장할 수 있는 최대 저장 기간은 30일이다.</p>
<blockquote>
<p>69.네이버 클라우드 플랫폼 챗봇 서비스와 채널 연동되는 서비스가 아닌 것은?</p>
</blockquote>
<p>1) 라인
2) 톡톡
3) 페이스북
4) 트위터</p>
<p>앞서 봤듯이 트위터 채널은 운영을 안 하므로 여기도 없다.</p>
<blockquote>
<p>70.네이버 클라우드 플랫폼 AI 서비스에서 제공하지 않는 상품은?</p>
</blockquote>
<p>1) Clova OCR
2) Clova Image Recognition
3) Clova Voice
4) Clova Face Recognition</p>
<p>클로바 이미지 리코그니션 서비스는 네이버 클라우드 서비스에 해당되지 않는다.</p>
<blockquote>
<p>71.클라우드는 기존 Legacy와 비교하여 다양한 장점이 있습니다. 
아래 보기 중 클라우드 장점이 아닌 것은?</p>
</blockquote>
<p>1) 동일한 성능의 서버를 비교하였을 때 Legacy보다 클라우드가 비용 경쟁력이 높다.
2) 서버 구성 시 짧은 시간 내에 구성이 가능하다.
3) 기본적인 보안 장비 및 네트웍이 구성되어 있다.
4) 오토스케일링 플랫폼과 같이 비용 효율적인 상품들이 준비되어 있다.</p>
<p>동일한 성능이라면 기간으로 비교를 해야지, 성능으로만 비교할 수 없다.</p>
<blockquote>
<p>72.네이버 클라우드 플랫폼에서 제공하지 않는 OS는?</p>
</blockquote>
<p>1) CentOS
2) Oracle Linux
3) Debian
4) Ubuntu</p>
<p>데비안은 지원되지 않는다.</p>
<blockquote>
<p>73.VPC 플랫폼에서 서버 정지 시 요금 할인이 적용되지 않는 서버 타입은?</p>
</blockquote>
<p>1) Standard
2) High-CPU
3) High-Memory
4) GPU</p>
<p>gpu는 하드웨어로 서버가 정지되어도 계속해서 부과된다.</p>
<blockquote>
<p>74.네이버 클라우드 플랫폼에서 제공하는 시스템 로그 분석 서비스는?</p>
</blockquote>
<p>1) RUA
2) CLA
3) ELSA
4) SENS</p>
<p>CLA는 클라우드 로그 아날리틱스로 여러 종류의 로그를 분석하고 통합하는 서비스이다.</p>
<blockquote>
<ol start="75">
<li>오토스케일링을 구성하고자 할 때 오토스케일링 그룹(ASG)을 구성하여야 한다. 
오토스케일링 그룹에 대한 설명으로 틀린 것은?</li>
</ol>
</blockquote>
<p>1) 하나의 그룹에서 생성 가능한 최대 서버 대수는 30대이다.
2) 기대 용량은 최소 용량보다 크거나 같아야 한다.
3) 헬스체크 유형에는 서버. 네트워크 트래픽, 로드밸런서가 있다.
4) 하나의 ASG에는 최대 10개의 로드밸런서를 연결할 수 있다.</p>
<p>오토스케일링 그룹에는 헬스 체크 유형으로 서버와 로드밸런서 중 하나이지, 네트워크 트래픽까지 포함되는 개념은 아니다.</p>
<blockquote>
<p>76.VPC 환경 / Classic 2세대 서버의 스펙 중 생성 불가능한 서버 스펙은 무엇인가요?</p>
</blockquote>
<p>1) vCPU 4개, RAM 8GB
2) vCPU 8개, RAM 8GB
3) vCPU 2개, RAM 8GB
4) vCPU 16개, RAM 128GB</p>
<p>vcpu 서버는 최소 그 두 배의 메모리와 함게 제공되어야 한다. 따라서 8개에 8개는 틀린 서술이다.</p>
<blockquote>
<ol start="77">
<li>오토스케일링의 Launch Configuration 구성 시 구성 가능한 항목이 아닌 것을 고르시오.</li>
</ol>
</blockquote>
<p>1) 생성될 서버의 OS
2) 사전에 만들어놓은 내 서버 이미지
3) Init Script
4) 로드밸런서</p>
<p>launch configuration은 오토스케일링 그룹에서 자동으로 생성될 서버의 기본 템플릿 역할을 한다. 따라서 로드밸런서는 구성할 수 없다.</p>
<blockquote>
<p>78.서버 생성시 init script를 통해 서버를 구성할 수 있습니다. CentOS 7.x 버전의 서버를 생성하면서 HTTPD를 설치한 후, HTTPD가 자동으로 가동되도록 init script에 명령어를 입력하고자 하는 경우 올바른 명령어는 무엇인가요?</p>
</blockquote>
<p>1) systemctl start httpd
2) chkconfig start httpd
3) systemctl enable httpd
4) chkconfig on httpd</p>
<p>httpd 서비스를 부팅 시 자동으로 활성화하도록 하려면 enable을 해야 한다.</p>
<blockquote>
<p>79.백업 상품 신청서 작성 시 필요한 정보가 아닌 것은?</p>
</blockquote>
<p>1) 백업 받을 서버의 호스트명
2) 백업 받을 서버의 비공인 IP
3) 백업 프로세스의 CPU 사용량 제한 여부
4) 데이터 사이즈</p>
<p>백업 신청 단계에서 백업 대상 서버의 식명 및 데이터 용량 등 서비스 제공에 필수적인 정보만 요구되므로 cpu 사용량 제한 여부는 필수적이지 않다.</p>
<blockquote>
<p>80.VPC 환경 / Classic 2세대 서버의 Standard 서버 스펙 중 생성 가능한 서버 스펙은 무엇인가요?</p>
</blockquote>
<p>1) vCPU 2개, RAM 8GB
2) vCPU 2개, RAM 4GB
3) vCPU 2개, RAM 16GB
4) vCPU 4개, RAM 4GB</p>
<p>클래식 2세대의 스탠다드 서버는 1:4 비율이다. 따라서 2개에 8개가 적합하다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[NCA 기출문제 풀이 (1) 1~40]]></title>
            <link>https://velog.io/@songwoo-yu/NCA-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4-1-140</link>
            <guid>https://velog.io/@songwoo-yu/NCA-%EA%B8%B0%EC%B6%9C%EB%AC%B8%EC%A0%9C-%ED%92%80%EC%9D%B4-1-140</guid>
            <pubDate>Wed, 07 Jan 2026 04:59:04 GMT</pubDate>
            <description><![CDATA[<blockquote>
<p>1.Public IP에 대한 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 서버당 1개의 Public IP만 부여가 가능하다.
2) Outbound시에는 NCP NAT IP로 통신한다.
3) Classic 환경에서는 KR-1 존의 Public IP는 KR-2 존의 서버에 부여가 불가능하다.
4) 서버를 반납해도 Public IP는 반납되지 않는다.</p>
<p>Public ip가 할당된 서버는 Outbound(외부로 나가는) 트래픽 시에는 NAT Gateway를 거치지 않아도 직접 인터넷에 접속할 수 있다. private ip라면 맞는 설명이다.</p>
<blockquote>
<p>2.다음 중 네이버 클라우드 플랫폼에서 제공하는 상품이 아닌 것은 무엇인가요?</p>
</blockquote>
<p>1) Cloud Functions
2) Container Registry
3) Outpost
4) SourcePipeline</p>
<p>outpost는 AWS의 온프레미스 하드웨어 기반 하이브리드 클라우드 솔루션이다.</p>
<blockquote>
<p>3.네이버 클라우드 플랫폼에는 다양한 상품들이 카테고리로 그룹화되어 있습니다. &quot;Cloud Hadoop&quot; 상품은 어떤 카테고리에 속해 있을까요?</p>
</blockquote>
<p>1) Compute
2) Database
3) Analytics
4) AI-Application Service</p>
<p>cloud hadoop은 네이버 클라우드에서 제공하는 빅데이터 분석 서비스로, 데이터의 저장 처리 분석을 위한 관리형 플랫폼이기에 Analytics에 해당한다.</p>
<blockquote>
<p>4.다음 중, 사용자가 Agent를 설치해야지만 사용할 수 있는 서비스가 아닌 것은?</p>
</blockquote>
<p>1) Cloud Insight
2) System Security Checker
3) CLA
4) 백업 서비스</p>
<p>cloude insight는 vpc 환경에서는 서버 생성 시 에이전트가 자동으로 설치되어 사용자가 별도 설치 작업 없이 이용할 수 있다.</p>
<blockquote>
<p>5.현재 네이버 클라우드 플랫폼에서 제공되지 않는 리전은? </p>
</blockquote>
<p>1) 홍콩
2) 미국 동부
3) 일본
4) 독일</p>
<p>미국 동부는 리전에 해당되지 않고 미국 서부는 존재한다. 현재 싱가포르 리전에 대한 내용도 나은다. 싱가포르는 꽤 활발하게 돌아가는 리전이라고 볼 수 있다.</p>
<blockquote>
<p>6.네이버 클라우드 플랫폼에서 제공하고 있지 않은 전문화된 클라우드는 어떤 것인가요?</p>
</blockquote>
<p>1) 금융 클라우드
2) 민간 클라우드
3) 공공 클라우드
4) 아카데미 클라우드</p>
<p>네이버 클라우드는 교육기관과의 협력이 존재하지만, 공식 상품 카테고리나 서비스로서 아카데미 클라우드를 운영하진 않는다.</p>
<blockquote>
<p>7.다음 중 콘솔에서 서비스를 신청할 수 없는 서비스는?</p>
</blockquote>
<p>1) 백업 서비스
2) 서버 이미지 생성
3) 스냅샷 기능
4) 모니터링 서비스</p>
<p>백업 서비스는 네이버 클라우드 플랫폼 콘솔에서 별도의 이용 신청 절차 없이 백업 대상만 추가하면 바로 이용이 가능하므로 신청할 수 없는 서비스라고 할 수 있다.</p>
<blockquote>
<ol start="8">
<li>정지가 필요한 경우가 아닌 것은? (복수정답)</li>
</ol>
</blockquote>
<p>1) 서버 이미지 생성
2) 서버 스펙 변경
3) 서버 반납
4) 공인 IP 부여</p>
<p>정지가 필요하지 않은 것은 서버 이미지 생성과 공인 IP 부여시이다. 운영과 정지 상태 모두에서 가능하기 때문이다.</p>
<blockquote>
<p>9.스케일링 설정시 오토 스케일링 그룹(ASG)에서 설정 가능한 내용이 아닌 것은 무엇인가?</p>
</blockquote>
<p>1) 오토스케일링으로 생성될 서버의 OS
2) 오토스케일링에서 사용할 Launch Configuration
3) 서버 증가, 감소 정책
4) 일정 설정</p>
<p>서버 OS는 Launch configuration 생성 시 선택하는 것이고, ASG는 해당 LC를 참조하여 서버를 생성하는 것이기에 OS는 ASG에서 설정할 수 없다.</p>
<blockquote>
<ol start="10">
<li>다음이 설명하는 내용은 Auto Scaling의 어떤 항목인가? 새로운 서버가 생성되었다고 해도, Init-Script 실행이나 업데이트 설치 등의 이유로 실제 서비스를 수행할 수 있을 정도로 준비되기까지는 시간이 소요될 수 있습니다. 이것은 실제 Scaling이 수행 중이거나 수행 완료된 이후에 모니터링 이벤트 알람이 발생하더라도 무시하도록 설정한 기간입니다.</li>
</ol>
</blockquote>
<p>1) 쿨다운
2) 헬스체크
3) 기대용량
4) Policy</p>
<p>쿨다은은 오토 스케일링에서 새로운 서버가 생성된 후, 해당 서버가 실제 서비스에 투입될 준비가 완료될 때까지 기다리는 대기 시간을 의미한다.</p>
<blockquote>
<p>11.Data Teleporter에 대한 설명으로 잘못된 것은?</p>
</blockquote>
<p>1) Data Teleporter 한 대당 100TB의 저장용량을 가지며, 내부적으로 디스크 문제가 최소화될 수 있도록 설계되었습니다.
2) 별도의 요청이 없다면 Data Teleporter는 최초 대여 후 60일 이내에 네이버 클라우드 플랫폼으로 반환되어야 합니다.
3) Data Teleporter는 고객이 신청한 암호화 키로 256비트 암호화되며, 암호화 키는 장치내 그 어디에도 저장되지 않습니다.
4) Linux Server와 Windows Server는 모두 NFS 또는 CIFS 공유 파일시스템으로 연결(mount) 할 수 있습니다.</p>
<p>90일 이내에 반환해야 하고, 90일 초과되면 추가 요금이 발생한다.</p>
<blockquote>
<ol start="12">
<li>다음 중, NAS에 대한 설명 중 잘못된 것은?</li>
</ol>
</blockquote>
<p>1) NAS는 임계치 설정에 따른 이벤트 알림 기능을 제공한다.
2) NAS는 일정한 스케줄에 따라 자동 스냅샷을 완성한다.
3) NAS는 리눅스 서버에서 공유 가능한 CIFS 프로토콜을 제공한다.
4) 네이버 클라우드 플랫폼에서는 NAS 생성 시 마운트 포인트 정보를 제공한다.</p>
<p>CIFS는 리눅스 서버가 아닌 windows 서버에서 공유가 가능하다.</p>
<blockquote>
<p>13.베어메탈에 대한 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 3가지 스펙을 제공하고 있다.
2) OS로 Oracle Linux도 제공한다.
3) 디스크 구성시 RAID 방식을 선택할 수 있다.
4) 내 서버 이미지, 스냅샷, 추가 스토리지 기능은 제공하지 않는다.</p>
<p>네이버 클라우드의 베어메탈 서버는 4가지 이상의 스펙을 제공한다.</p>
<blockquote>
<p>14.Bare Metal 서버에 대한 설명 중 틀린 것은?</p>
</blockquote>
<p>1) RAID 1 구성방식만 제공한다.
2) 요금제는 시간 요금제만 제공한다.
3) Init Script 사용이 가능하다.
4) Oracle Linux가 제공된다.</p>
<p>베어메탈은 다른 레이드 방식도 지원한다. </p>
<blockquote>
<p>15.다음 중, 네이버 클라우드 플랫폼 서버에 스토리지 추가와 관련하여 틀리게 설명한 것은?</p>
</blockquote>
<p>1) Linux의 LVM, Window는 동적디스크 할당을 통해 여러 개의 디스크를 하나의 볼륨으로 묶을 수 있습니다.
2) 서버에 연결된 디스크를 다른 서버로 옮길 수 있습니다.
3) 사용 중인 디스크의 크기가 부족할 경우, 최대 15개의 스토리지를 추가할 수 있습니다.
4) 스토리지 당, 100GB, 500GB, 1TB의 단위의 용량만 추가할 수 있습니다.</p>
<p>10GB 단위로 용량을 지정할 수 있다.</p>
<p>16.네이버 클라우드 플랫폼에서 제공하는 GPU 서버는 VM에 최대 몇 개의 GPU를 제공할 수 있는지 올바른 답을 고르시오.</p>
<p>1) 1개
2) 2개
3) 4개
4) 그래픽카드 종류마다 장착할 수 있는 개수가 다르다.</p>
<p>GPU 서버(VM)는 최대 4개의 GPU를 장착할 수 있다.</p>
<blockquote>
<ol start="17">
<li>다음 스토리지 상품 특징에 대한 설명으로 맞는 것은?</li>
</ol>
</blockquote>
<p>1) NAS는 10GB, 100GB, 500GB 등 다양한 단위로 스토리지 증가가 가능하다.
2) Block Storage와 NAS는 모두 공유 가능한 스토리지이다.
3) NAS는 동적으로 볼륨 사이즈 조정이 가능하고, 자동 스냅샷 및 이벤트 알람 기능을 제공한다.
4) NAS는 Windows 서버만 이용할 수 있는 스토리지다.</p>
<p>NAS는 동적으로 사이즈 조정이 가능하며 스케줄링을 통해 스냅샷을 생성할 수 있고 이벤트 알람까지 설정할 수 있다.</p>
<blockquote>
<p>18.네이버 클라우드 플랫폼 VPC 환경에서 멀티존 이용이 가능한 상품은? (복수정답)</p>
</blockquote>
<p>1) Cloud DB for MySQL
2) Load Balancer
3) Server
4) Cloud Hadoop</p>
<p>VPC환경에서 MySQL은 멀티존 옵션을 제공하며, 로드 밸런서도 멀티존 구성을 통해 여러 존에 트래픽을 분산할 수 있다.</p>
<blockquote>
<p>19.CDN+ 설정 시 설정 항목에 대한 설명 중 올바르지 않은 것은 무엇인가요?</p>
</blockquote>
<p>1) Purge : CDN 캐시 서버에 저장되어 있는 콘텐츠를 삭제하는 기능
2) Secure Token : 토큰 기반의 인증으로 허용된 접근에만 콘텐츠를 전달
3) lgnore Query String : 콘텐츠가 지정된 도메인에만 제공되며 다른 사이트에서 참조되는 것을 방지
4) Access Log : CDN 사용 로그를 확인할 수 있는 기능</p>
<p>ignore query string은 캐시 정책 관련 기능으로 동일한 경로의 파일에 대해 쿼리 스트링이 달라도 같은 콘텐츠로 인식하여 캐싱효율을 높인다.</p>
<blockquote>
<ol start="20">
<li>다음 상품 중 상품 생성 시 CDN을 함께 생성하는 기능이 없는 상품은 무엇인가요?</li>
</ol>
</blockquote>
<p>1) VOD Transcoder
2) Image Optimizer
3) Live Station
4) VOD Station</p>
<p>CDN을 생성하는 기능은 VOD Transcoder에는 존재하지 않는다. 이는 영상 파일을 다양한 포맷으로 변환하는 서비스로 별도로 CDN 상품을 신청하고 설정해야 한다.</p>
<blockquote>
<p>21.다음 중 VPC에서 사용 가능한 IP 대역은 무엇인가요?</p>
</blockquote>
<p>1) 10.0.0.0/12
2) 172.17.0.0/16
3) 192.168.0.0/8
4) 192.168.1.0/30</p>
<p>172.17.0.0/16이 정답이며 VPC에서 사용할 수 있는 사설 IP 대역은 private 대역(10.0.0.0/8,172.16.0.0/12,192.168.0.0/16) 내에서 /16~/28 범위여야 한다.</p>
<blockquote>
<ol start="22">
<li>네이버 클라우드 플랫폼의 VPC 환경에서 ACG에 대한 설명으로 옳은 것은 무엇인가요?</li>
</ol>
</blockquote>
<p>1) 프로토콜은 TCP, UDP만 지원한다.
2) Subnet당 100개 생성이 가능하다.
3) 서버와의 맵핑 정보 변경이 가능하다.
4) Rule에 우선순위가 있다.</p>
<p>VPC 환경에서 서버의 네트워크 인터페이스에 적용된 ACG를 콘솔에서 언제든 변경할 수 있다. 다시 말해 서버가 실행중이더라도 ACG 맵핑을 변경하고 교체할 수 있다는 것이다.</p>
<blockquote>
<ol start="23">
<li>Image Optimizer에 대한 설명으로 틀린 것을 고르시오.</li>
</ol>
</blockquote>
<p>1) 이미지 리사이즈 기능을 제공한다.
2) 이미지 크롭 기능을 제공한다.
3) 이미지 자동회전 기능을 제공한다.
4) 이미지 일관 변환 및 저장 기능을 제공한다.</p>
<p>이미지의 일괄 변환과 저장은 제공되지 않는다.</p>
<blockquote>
<p>24.애플리케이션 로드밸런서의 특징으로 틀린 것은 무엇인가요?</p>
</blockquote>
<p>1) HTTP, HTTPS 프로토콜 지원
2) 고정 IP 제공
3) URL 기반 분기 가능
4) 별도의 설정 없이 Client IP 확인 가능</p>
<p>로드밸런서를 경유하면 서버에서는 그 ip만 확인할 수 있다. 클라이언트 ip를 확인하기 위해서는 별도의 설정이 필요하다.</p>
<blockquote>
<p>25.네이버 클라우드 플랫폼의 VPC 환경에서 ACG 룰이 적용되는 장치는 무엇인가요?</p>
</blockquote>
<p>1) 서버
2) 서버 NIC
3) IP
4) Subnet</p>
<p>VPC 환경에서 ACG룰이 적용되는 장치는 서버 인터페이스 카드로, 서버당 총 3개가 제공된다.</p>
<blockquote>
<p>26.네이버 클라우드 플랫폼 VPC의 Subnet에 대한 설명으로 틀린 것은 무엇인가요?</p>
</blockquote>
<p>1) Private Subnet과 Public Subnet이 있습니다.
2) 서버들은 Private Subnet과 Public Subnet 모두 위치 시킬 수 있습니다.
3) 공인 IP가 필요한 로드밸런서는 Public Subnet에 위치합니다.
4) Private Subnet에 있는 서버들은 공인 IP 부여를 할 수 없습니다.</p>
<p>서버는 생성 시 하나의 서브넷(공인, 사설 중 하나만)에만 위치할 수 있다.</p>
<blockquote>
<ol start="27">
<li>다음 상품 중 이벤트 설정이 불가능한 상품은 무엇인지 고르시오. (복수정답)</li>
</ol>
</blockquote>
<p>1) Server
2) NAS
3) Object Storage
4) CDN+</p>
<p>오브젝트 스토리지와 CDN+는 직접적으로 이벤트 알림을 설정하는 기능이 없다. </p>
<blockquote>
<p>28.네이버 클라우드 플랫폼 상품 중 Apache Kafka Cluster를 제공하는 서비스 이름은 무엇인가요?</p>
</blockquote>
<p>1) Cloud Data Streaming Service
2) Cloud Search
3) Data Analytics Service
4) Cloud Advisor</p>
<p>클라우드 데이터 스트리밍 서비스로 아파치 카프카는 원래 그 서비스이다.</p>
<blockquote>
<p>29.네이버 클라우드 플랫폼의 Effective Log Search &amp; Analytics의 로그전송 방법이 아닌것은 무엇인가요?</p>
</blockquote>
<p>1) HTTPS SDK
2) IOS SDK
3) SOCK SDK
4) LOG SDK</p>
<p>sock sdk는 실제 제공되는 로그 전송 방식이 아니다.</p>
<blockquote>
<p>30.Workplace에서 제공되지 않는 기능은 무엇인가요?</p>
</blockquote>
<p>1) 결제시스템
2) 인사시스템
3) 스프레드 시트
4) 메신저</p>
<p>스프레드 시트(엑셀)은 제공되지 않는 기능이다.</p>
<blockquote>
<p>31.다음 중, Cloud DB for MySQL과 관련하여 잘못된 설명은?</p>
</blockquote>
<p>1) Cloud DB for MySQL은 자동 Fail-over 기능을 제공한다.
2) Cloud DB for MySQL의 최대 백업 파일 보관은 20일이다.
3) Cloud DB for MySQL은 최대 10개의 Slave DB를 생성할 수 있다.
4) Cloud DB for MySQL은 Slave DB로의 읽기 부하분산이 가능하다.</p>
<p>최대 보관 기간은 최대 30일이다.</p>
<blockquote>
<p>32.네이버 클라우드 플랫폼 VPC 환경에서의 ACG에 대한 설명 중 틀린 것은?</p>
</blockquote>
<p>1) 아웃바운드에 대한 설정이 가능하다.
2) 접근 허용에 대한 룰을 설정한다.
3) ACG 하나당 최대 100개의 룰을 적용할 수 있다.
4) 서버는 최대 5개의 ACG를 맵핑할 수 있다.</p>
<blockquote>
<p>33.Security Monitoring에서 제공되지 않는 항목은?</p>
</blockquote>
<p>1) IDS
2) IPS
3) WAF
4) 침해탐지</p>
<p>침해탐지라는 명칭의 서비스 자체가 네이버 클라우드에 존재하지 않는다.</p>
<blockquote>
<p>34.서버 생성시 init script를 통해 서버를 구성할 수 있습니다. CentOS 7.x 버전의 서버를 생성하면서 HTTPD를 설치하도록 init script에 명령어를 입력하고자 하는 경우 올바른 명령어는 무엇인가요?</p>
</blockquote>
<p>1) install httpd
2) yum install httpd
3) yum install -y httpd
4) yum install -a httpd</p>
<p>yum install httpd가 apache를 설치하는 기본 명령어이다. -y를 추가하면 비대화식 스크립트 환경에서 모든 옵션에 yes를 해주므로 스크립트에서 문제없이 실행이 가능하다.</p>
<blockquote>
<ol start="35">
<li>마이크로서버에 대한 설명 중 틀린 것은?</li>
</ol>
</blockquote>
<p>1) Network interface를 만들 수 없다.
2) 1vCPU, 1GB 메모리이다.
3) OS는 CentOS, Ubuntu, Windows를 지원한다.
4) 결제수단 최초 등록 월부터 1년간 이용요금이 무료이다.</p>
<p>windows는 제공되지 않는다. 고정된 자원에 비해 너무 많은 리소스를 사용하기 때문이다. </p>
<blockquote>
<p>36.CentOS를 사용중인 VM에서 파일시스템 증설 관련 내용 중 틀린 것은? (복수정답)</p>
</blockquote>
<p>1) NCP 콘솔에서 Block Storage 크기 변경 액션을 수행하면 사전 설치된 Agent가 자동으로 파일시스템을 확장한다.
2) 최초 구축 시 Block Storage로 할당하는 부분은 LVM으로 구성하여 파일시스템 확장 필요시 PV, LV를 추가한다.
3) Block Storage 크기 변경 액션을 통해 자유롭게 할당 용량을 증설/감설 할 수 있다.
4) Block Storage 크기 변경 액션을 수행하려면, 대상 블록 스토리지가 사용중일 경우 파일시스템을 연결 해제해야 한다.</p>
<p>Agent가 자동으로 파일시스템을 확장하는 것이 아니라 직접 명령을 실행해야 한다.
블록 스토리지는 용량을 증설할 수는 있으나 감설할 수는 없다.</p>
<blockquote>
<p>37.다음 기능을 이용하기 위해, 사전에 서버 정지가 필수적인 기능은?</p>
</blockquote>
<p>1) 내 서버 이미지
2) 스냅샷
3) 서버 이미지 빌더
4) 서버 반납</p>
<p>당연히 서버 반납 시에는 서버 정지가 선행되어야 한다. 그 외 이미지나 스냅샷, 이미지 빌더는 운영중에도 실행이 가능하다.</p>
<blockquote>
<ol start="38">
<li>다음 중 Block Storage에 대한 설명 중 잘못된 것은?</li>
</ol>
</blockquote>
<p>1) 데이터 손실 방지를 최우선으로 설계하여 모든 요소가 이중화 되어 있습니다.
2) 2000GB까지 생성 가능하며, 서버 1대당 10개의 스토리지를 사용할 수 있습니다.
3) 기동 중단이나 성능 저하 없이 탄련적으로 성능 변경이 가능합니다.
4) HDD/SDD 두 가지 타입으로 제공되며 목적에 맞게 적절한 스토리지 종류를 선택하여 사용할 수 있습니다.</p>
<p>블록 스토리지는 2000GB까지 생성이 가능하긴 하지만, 서버당 10개가 아니라 16개의 스토리지를 사용할 수 있다.</p>
<blockquote>
<ol start="39">
<li>네이버 클라우드 플랫폼에서 제공하는 GPU 카드는?</li>
</ol>
</blockquote>
<p>1) P40
2) T4
3) V100
4) P40, T4, V100 모두 제공</p>
<p>네이버 클라우드 플랫폼에서는 세 가지 모두 제공한다.</p>
<blockquote>
<p>40.네이버 클라우드 플랫폼 서버에 스토리지 추가를 할 경우 단일 추가 스토리지당 최대 용량은 얼마인가요?</p>
</blockquote>
<p>1) 1TB
2) 2TB
3) 3TB
4) 4TB</p>
<p>스토리지 추가 시 하나 당 2TB까지의 용량을 가질 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[NCA 개요]]></title>
            <link>https://velog.io/@songwoo-yu/NCA-%EA%B0%9C%EC%9A%94</link>
            <guid>https://velog.io/@songwoo-yu/NCA-%EA%B0%9C%EC%9A%94</guid>
            <pubDate>Wed, 07 Jan 2026 02:41:18 GMT</pubDate>
            <description><![CDATA[<p>1월 13일 화요일 14시에 NCA(NAVER Cloud Platform Certified Associate) 시험을 등록했다. 네이버 클라우드 플랫폼에서 AWS의 다양한 시험과 비슷하게 자격증 체계를 만들어놨는데, 그들 중 가장 쉬운 자격증이다.</p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/2e48c89d-7292-45ff-bf95-b969c4c0cbf4/image.png" alt=""></p>
<p>쉽고, AWS도 아닌데 이 자격증을 취득한 이유는 일단 영구적인 자격증이기 때문이다. 다음으로 학교에서 배부받은 NCA 크레딧을 가지고 있었기 때문이다. 마지막으로 AWS 자격증을 응시하기 전에 한 번 봐보자는 마음도 있었다.</p>
<p>따로 교재나 이런 것들이 존재하지 않고(그 정도 시험도 아니고) 덤프들이 존재하기 때문에, 이걸 찾아서 공부하려고 한다. 일단 25년 12월에 응시한 교수님께서 말씀하시길 &quot;오늘 NCA 시험을 제가 봤는데 어렵지 않게 통과하였습니다. 새로운 문제가 있기도 했고 문제 중 변형된 부분도 있습니다. 기출만 충실히 풀면 모두 합격하니...&quot;라고 하셨다. 처음에는 기출의 답만 외우려고 했었는데, 이 이야기를 들으니 대충 뭐가 뭔지 정도는 알아야겠다는 생각이 들었다. 그래서 오늘부터 121문제의 기출문제를 풀이하는 시간을 가져보려고 한다. 다만 그 전에 네이버 클라우드 플랫폼 시험의 개요를 정리하고 들어가보려고 한다.</p>
<h3 id="네이버-클라우드-플랫폼-nca-자격증">네이버 클라우드 플랫폼 NCA 자격증</h3>
<p>시험 방식: 100% 비대면 온라인 시험으로 진행됩니다. 시험 중 구글 미트(Google Meet)를 통해 화면 공유 및 감독됩니다.
시험 구성: 객관식 60문항으로 구성되며, 시험 시간은 60분입니다
일정 예약: 매주 월요일 오전 10시에 신규 좌석이 오픈되며, 주로 화/수/목요일에 시험이 운영됩니다. 인기 있는 시간대는 금방 매진되므로 월요일 오전에 예약하는 것이 좋습니다.
합격 기준: 100점 만점 중 60점 이상 득점 시 합격입니다.</p>
<h3 id="시험-비중">시험 비중</h3>
<h4 id="network">Network</h4>
<p>네트워크 환경은 기존의 Classic 환경에서 VPC(Virtual Private Cloud) 환경으로 완전히 전환되고 있다. 시험 문제의 대부분은 VPC 환경을 기준으로 출제되므로, 서브넷 구조와 트래픽 제어 방식에 대한 이해가 필요하다. VPC는 논리적으로 격리된 가상 네트워크 공간을 제공한다. RFC1918 사설 IP 대역(10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16) 내에서 CIDR 블록을 지정하여 생성한다. 예를 들어 172.17.0.0/16은 유효한 VPC 대역이다. 하나의 계정당 생성할 수 있는 VPC의 최대 개수는 3개이다.</p>
<p>서브넷(Subnet) 격리: 서브넷은 Public과 Private으로 명확히 구분된다. Public Subnet은 인터넷 게이트웨이(IGW)와 연결되어 외부 통신이 가능하다. 공인 IP가 필요한 서버나 로드밸런서는 반드시 이곳에 위치해야 한다. 반면 Private Subnet는 외부에서 직접 접근할 수 없다. 이곳에 위치한 서버가 외부 인터넷(예: YUM 업데이트)에 접속하려면 NAT Gateway를 경유해야 한다. Private Subnet의 서버가 인터넷 게이트웨이를 직접 이용할 수 없는 것이다.</p>
<p>네트워크 보안쪽에서는 ACG(Access Control Group)와 NACL(Network Access Control List)을 비교된다. ACG는 우선순위가 없고 오직 허용 규칙만 존재한다는 특성을 이해해야 한다. 반면, NACL은 서브넷 단위의 문지기 역할을 하며 Deny 규칙을 통해 특정 IP 대역을 차단할 수 있다는 점에서 보안 계층의 차별성을 이해해야 한다.</p>
<p>로드밸런서와 관련해서는 Application Load Balancer (ALB), Network Load Balancer (NLB), Network Proxy Load Balancer (NPLB)의 사용 사례를 명확히 구분해야 한다. 먼저 Application Load Balancer는 HTTP/HTTPS 프로토콜을 지원하며, URL 경로(Path) 기반의 라우팅이 가능하다는 점이 특징이다. 또한, SSL 인증서를 로드밸런서에 탑재하여 암호화 부하를 분산(Offloading)시키는 기능을 제공한다. 프록시 방식의 로드밸런서(ALB 등)를 사용할 때, 백엔드 서버는 클라이언트의 실제 IP가 아닌 로드밸런서의 IP를 보게 된다. &quot;별도의 설정 없이 Client IP 확인이 가능하다&quot;는 것은 정답이 아닌 것이다.</p>
<ol>
<li>Public IP: 서버당 1개만 할당 가능하며, 서버 반납 시 자동으로 반납되지 않고 별도로 해제해야 한다.</li>
<li>NAT Gateway: 비공개(Private) IP 서버가 외부 인터넷과 통신하기 위해 필요하다.</li>
<li>ACG (Access Control Group): 서버 단위의 방화벽입니다. VPC 환경에서는 하나의 NIC(네트워크 인터페이스)에 최대 3개의 ACG를 적용할 수 있으며, 설정된 우선순위가 아닌 모든 규칙을 확인하여 반영한다.</li>
<li>VPC Peering: 서로 다른 VPC 간의 통신을 가능하게 해주는 서비스이다.</li>
<li>Subnet: 특정 Zone(가용 영역)에 종속되며, 하나의 Subnet은 여러 Zone에 걸쳐 존재할 수 없다.</li>
</ol>
<p>이정도는 다른 클라우드 서비스를 이용해봤으면 대략 비슷한 것들이다. AWS에서도 public ip는 반납 시 별로도 해제해줘야 하고, 내부의 private ip가 외부와 통신하기 위해서는 네트워크 게이트웨이가 필요하다. 이런식으로 기억하고 넘어가면 된다.</p>
<h4 id="compute">Compute</h4>
<p>네이버 클라우드는 VM(가상머신)과 Bare Metal 서버 모두를 제공한다. </p>
<p>먼저 마이크로 서버(Micro Server)는 스펙이 1 vCPU, 1GB RAM으로 구성되어 있다. CentOS, Ubuntu와 같은 리눅스 계열 OS만 지원하며, Windows Server는 지원하지 않는다. 추가 네트워크 인터페이스(NIC) 생성이 불가능하다.</p>
<p>다음으로 베어메탈 서버는 가상화 레이어(Hypervisor) 없이 하드웨어 자원을 직접 제어해야 하는 고성능 I/O 워크로드로 RAID 구성이 자유롭다. 또한 Oracle Database 구동을 위한 Oracle Linux를 공식 지원한다. 물리 서버의 특성상 &#39;내 서버 이미지(My Server Image)&#39; 생성 기능이나 라이브 스냅샷 기능은 제공되지 않는다. 서버를 정지(Shutdown)하더라도 하드웨어 자원을 점유하고 있으므로 요금이 계속 부과된다.</p>
<p>가상 서버(VM) 환경에서는 하나의 인스턴스에 최대 4개의 GPU 카드를 장착할 수 있다. 12개나 8개 등의 보기는 베어메탈이나 특수 목적 인스턴스에 해당할 수 있으나, 일반적인 VM 기준으로는 4개이다. NVIDIA V100, T4, P40 등 다양한 세대의 GPU 라인업을 제공한다.</p>
<p>서버 스펙 분류는 Standard는 1:4 비율, High-CPU는 1:2 비율이며, High-Memory는 1:8 비율이라고 볼 수 있다.</p>
<p>초기화 스크립트 (Init Script)는 서버가 최초 생성될 때 1회 실행되어 소프트웨어 설치나 환경 설정을 자동화한다. 서버 생성 시에만 최초 1회만 실행된다.1 서버를 재부팅할 때마다 실행되지 않는다. Linux의 경우 bash, perl, python 등을 지원한다. 그러나 PHP는 시스템 스크립팅 언어로 간주되지 않아 Init Script 작성 언어로 지원되지 않는다.</p>
<p>오토 스케일링 (Auto Scaling)은 트래픽 변동에 따라 서버 수를 자동으로 조절하여 가용성과 비용 효율성을 확보한다. 먼저 쿨다운은 스케일링 이벤트(서버 추가/삭제)가 발생한 후, 시스템이 안정화될 때까지 추가적인 스케일링 트리거를 무시하는 대기 시간으로 서버가 부팅되고 애플리케이션이 로딩되는 동안 불필요한 중복 스케일링(Oscillation)을 방지한다. 오토 스케일링 그룹(ASG) 자체 설정에서는 서버의 OS를 선택할 수 없다.서버의 이미지(OS), 스펙, 스토리지 설정은 Launch Configuration이라는 별도의 템플릿에서 정의해야 한다. 용량 제한: 하나의 ASG에서 생성 가능한 최대 서버 수는 기본적으로 30대로 제한된다.</p>
<ol>
<li>서버 이미지: 내 서버 이미지를 생성하는 동안에도 서버는 정상 운영된다.</li>
<li>GPU 서버: VPC 환경에서 NVIDIA T4(최대 2개), V100(최대 8개) 장착이 가능하다.</li>
<li>Auto Scaling: 서버를 자동으로 확장/축소하는 기능으로, Launch Configuration 설정을 통해 이용한다.</li>
</ol>
<h4 id="storage">Storage</h4>
<p>NCP는 데이터의 접근 방식(Block, File, Object)에 따라 세분화된 스토리지 서비스를 제공한다. 각 스토리지의 프로토콜, 용량 한계, 확장성을 명확히 구분하는 것이 시험의 핵심 포인트이다.</p>
<p>블록 스토리지 (Block Storage)는 서버에 직접 마운트되어 로컬 디스크처럼 사용되는 고성능 저장소로, 단일 볼륨의 최대 크기는 2TB (2000GB)이다. 서버의 루트(OS) 볼륨을 제외하고, 추가로 최대 15개의 블록 스토리지를 연결할 수 있다. 볼륨의 크기는 증가(Scale-up)만 가능하며, 축소(Scale-down)는 불가능하다. 크기 변경을 위해서는 해당 볼륨을 서버에서 마운트 해제(Unmount)하거나 서버를 정지해야 할 수도 있다. 블록 스토리지는 원칙적으로 하나의 서버에만 연결(Attach)된다. 여러 서버가 동시에 데이터를 읽고 써야 한다면 NAS를 사용한다.</p>
<p>NAS는 네트워크를 통해 여러 서버가 파일 단위로 데이터를 공유하는 서비스로, 프로토콜 매핑과 자동 스냅샷 기능이 제공된다. </p>
<p>오브젝트 스토리지는 HTTP REST API를 통해 접근하는 웹 스케일 저장소로, 자체적으로 임계치 기반의 이벤트 알림 기능을 콘솔에서 직접 설정할 수 업ㅂㅅ다는 문제가 있다. </p>
<p>데이터 텔레포터는 PB(페타바이트)급 데용량 데이터를 오프라인으로 이전하기 위한 대여 서비스로 반납 기한은 90일이다. 보안은 AES 256 알고리즘으로 암호화되어 있다. 대당 100TB의 저장 용량을 제공한다.</p>
<ol>
<li>Object Storage: 파일 공개 설정 시 조회 및 다운로드만 가능하며, 외부 사용자의 &#39;업로드&#39; 권한은 포함되지 않는다.</li>
<li>NAS: Linux와 Windows 서버 모두 마운트 가능하며, 자체 스냅샷 기능을 제공한다.</li>
<li>Block Storage: 스냅샷을 생성한 후, 이를 이용해 스토리지를 생성하면서 디스크 타입(HDD/SSD)을 변경할 수 있다.</li>
</ol>
<h4 id="database--analytics">Database &amp; Analytics</h4>
<p>Cloud DB for MySQL은 데이터베이스 파트의 핵심이다. 단순한 설치형 DB가 아닌, 클라우드 네이티브 기능인 자동 페일오버(Auto Fail-over)와 이중화 구성(High Availability)이 들어간다. Master DB의 부하를 줄이기 위해 최대 10개의 Slave DB를 생성할 수 있으며, 로드밸런서를 통해 읽기 트래픽을 분산시키는 아키텍처 패턴을 이용할 수 있다. 백업 데이터의 보관 기간(최대 30일)과 시점 복구(Point-in-Time Recovery) 기능이 제공된다.</p>
<p>로그 관리 서비스인 Effective Log Search &amp; Analytics (ELSA)와 Cloud Log Analytics (CLA)의 차이와 통합 활용도 중요하다. 특히 ELSA의 로그 전송 방식과 관련하여 HTTPS SDK, iOS SDK, Android SDK 등은 지원하지만, 존재하지 않는 &quot;SOCK SDK&quot;를 걸러낼 수 있어야 한다.</p>
<p>Cloud Insight 서비스가 에이전트 설치 없이도 하이퍼바이저 레벨의 기본 모니터링을 제공한다는 점(반면 상세 지표는 에이전트 필요)을 구분할 필요가 있다.</p>
<ol>
<li>Cloud Hadoop: &#39;Analytics&#39; 카테고리에 속하며, 근간 스토리지로 Object Storage와 Block Storage를 사용한다.</li>
<li>지원 DBMS: MySQL, MS-SQL, Redis 등은 제공되나, Oracle은 Cloud DB 상품군에서 제공되지 않는다.</li>
</ol>
<h4 id="특화-서비스">특화 서비스</h4>
<p>Image Optimizer, VOD Station, Live Station 등 미디어 처리 서비스들은 단순히 기능을 제공하는 것을 넘어 CDN(Content Delivery Network)과의 긴밀한 통합이 특징이다. </p>
<p>Image Optimizer는 이미지의 리사이즈, 크롭, 워터마킹, 자동 회전 등을 실시간으로 처리하며 CDN을 통해 배포한다. 단, 처리된 이미지를 영구 저장하는 스토리지가 아닌 변환 프로세스라는 점을 이해해야 한다.</p>
<p>CDN+는 캐시 퍼지(Purge), 보안 토큰(Secure Token), 쿼리 스트링 무시 설정 등 고급 캐싱 전략에 대한 이해를 묻는다. 특히 &quot;Ignore Query String&quot; 설정이 보안 기능(사이트 참조 방지)이 아니라 캐시 효율화 기능임을 구분해야 한다.</p>
<p>기업 정보 시스템인 Workplace는 인사(HR), 근태, 비용 정산(Accounting), 워크플로우(Workflow) 기능을 통합 제공하는 SaaS이다. 시험에서는 Workplace가 제공하는 기능과 제공하지 않는 기능(예: 스프레드시트 기능은 네이버 웍스 등의 영역이며 Workplace 자체 기능이 아님)을 구분할 필요가 있다.</p>
<p>글로벌 서비스 확장을 위한 리전 정보도 업데이트되었다. 싱가포르, 일본, 독일, 미국 서부 등의 리전이 활성 상태임을 인지해야 하며, &quot;미국 동부&quot; 리전은 제공되지 않는다는 사실이 기출문제로 확인된다. 또한, 산업별 규제 준수를 위한 금융 클라우드, 공공 클라우드, 민간 클라우드의 3대 축은 존재하지만, &quot;아카데미 클라우드&quot;와 같은 가상의 상품명은 존재하지 않는다는 것을 기억하자</p>
<h4 id="security">Security</h4>
<p>상품 라인업: App Safer, File Safer, Site Safer는 존재하지만 Data(or Web) Safer라는 상품은 없다. 다만 다른 업체들에서는 많이 사용하는 이름이다.</p>
<h3 id="최신-동향">최신 동향</h3>
<p>리전(Region) 관련하여 미국 동부는 서비스를 제공하지 않는 지역이다. 요즘 싱가포르 리전에 대한 선지가 나오고 있다고 하는데, 그곳은 서비스가 활발히 진행 중인 곳이다.
서버에 공인 IP를 할당하더라도, 서버 내부에서 ifconfig 또는 ipconfig 명령어를 입력했을 때 공인 IP를 직접 확인할 수 없다는 점도 숙지해야 한다.
또한 Private Subnet에 있는 서버는 Internet Gateway를 통해 직접 나갈 수 없으며, 반드시 <strong>NAT Gateway</strong>를 거쳐야 한다</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[정보보안 시작하기]]></title>
            <link>https://velog.io/@songwoo-yu/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@songwoo-yu/%EC%A0%95%EB%B3%B4%EB%B3%B4%EC%95%88-%EC%8B%9C%EC%9E%91%ED%95%98%EA%B8%B0</guid>
            <pubDate>Tue, 06 Jan 2026 03:29:24 GMT</pubDate>
            <description><![CDATA[<p>오늘부터 반년 간 정보보안(산업)기사를 공부해보려고 한다. 욕심이 많으니 하려고 하는 것들도 많아진다. 그래서 보안은 조금씩 꾸준히 공부를 해나가려고 한다.</p>
<h3 id="정보보안산업기사의-구성">정보보안(산업)기사의 구성</h3>
<p>정보처리(산업)기사가 3과목으로 구성된 것과 다르게 정보보안은 4(5)과목으로 구성되어 있다. 양도 다른 (산업)기사보다 훨씬 많다고 악명이 자자하다. </p>
<p>정보보안은 시스템 보안, 네트워크 보안, 애플리케이션, 정보보호일반, (보안관련법규)로 구성되어 있다. 각 과목당 20문제씩 출제되며 과락이 발생하면 총점 60점이 넘어도 바로 탈락된다.</p>
<h4 id="1-시스템-보안">1. 시스템 보안</h4>
<p>시스템 보안은 그 대상이 되는 시스템 범위(단말, 서버)와 그 운영체제를 정리한다. 그리고 이러한 시스템에 대한 보안 위협과 공격 기법을 공부한 후, 이를 예방하고 대응하는 방법을 정리한다.</p>
<h4 id="2-네트워크-보안">2. 네트워크 보안</h4>
<p>네트워크도 마찬가지로 대상이 되는 네트워크에 대한 개념과 활용 현황을 정리하고 이에 대한 공격 기술 및 보안 기술을 공부한다.</p>
<h4 id="3-애플리케이션-보안">3. 애플리케이션 보안</h4>
<p>애플리케이션 보안에서는 인터넷 응용 기술인 FTP, Mail, Web/App, DNS, DB기술에 대한 보안을 공부하게 된다. 추가적으로 취약점의 유형에 대해 살펴보고, 대응 기술을 정리한다.</p>
<h4 id="4-정보보안일반">4. 정보보안일반</h4>
<p>과목 자체는 4과목이지만, 가장 먼저 공부할 필요가 있는 과목이다. 먼저 보안요소 기술이라는 소단위가 있는데 여기서는 인증과 접근 통제, 키, 디지털 서명에 대해 공부한다. 다음으로 암호학에서는 암호 알고리즘과 해시함수를 공부하도록 되어 있다.</p>
<h4 id="5-보안관리법규">5. 보안관리법규</h4>
<p>이 과목은 산업기사에서 정규과목은 아니지만, 꼭 기사 시험을 보지 않아도 기억해둘 필요가 있다. 정보보호관리의 개념부터 계획, 설계, 관리, 제도를 거쳐 관련 법규까지를 공부한다.</p>
<h3 id="공부-방식">공부 방식</h3>
<p>나의 경우 정보처리산업기사를 공부하고 있기 때문에, 다음과 같이 공부를 해볼 생각이다. 먼저 2주간 정보처리산업기사의 1과목 정보시스템 기반 기술(운영체제와 네트워크, 소프트웨어 공학)을 공부하며 정보보안산업기사의 정보보호일반과 보안 관리 법규를 공부할 생각이다. 다음으로 3주간은 정보처리의 프로그래밍 언어 활용(C, Java, Python, Web)을 공부하며 정보보안의 시스템 보안을 공부할 것이다. 그 이후 3주간 데이터베이스 활용을 공부하며 정보보안의 네트워크 보안과 애플리케이션 보안을 공부하려고 한다.</p>
<p>앞으로의 일정은 1월에 NCA와 AWS Cloud Practitioner을, 2월에 정보처리산업기사 필기를 응시하고, 3월에 리눅스 마스터 2급 2차 시험을 응시하고, 4월에 중간고사, 5월에 정보처리산업기사 실기를 응시할 생각이다. 6월에 정보보안산업기사 필기를, 7월에 기말고사와 정보보안 산업기사 실기를 응시하고, 8월에 AWS Solutions Architect Associate를 응시해볼 생각이다. 뭐 9월부터는 너무 먼 미래이며, 앞선 자격증 계획 중 취득하지 못한 것이 있다면 다시 취득해봐야하는 시기일 듯하다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ssh(port 22) root 접속 제한하기]]></title>
            <link>https://velog.io/@songwoo-yu/sshport-22-root-%EC%A0%91%EC%86%8D-%EC%A0%9C%ED%95%9C%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@songwoo-yu/sshport-22-root-%EC%A0%91%EC%86%8D-%EC%A0%9C%ED%95%9C%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 05 Jan 2026 06:05:26 GMT</pubDate>
            <description><![CDATA[<p>오늘은 Cloud VM을 접속할 때 자주 사용하는 ssh 접속 방식 중 평문 인증 방식과 root 직접 접근을 제한하고 ssh pub key로만 접속할 수 있게 변경해보았다. 또한 brute-force 공격을 fail2ban으로 자동 차단하도록 패키지를 설치했고, 웹 배포용 디렉토리만 ubuntu 계정으로 권한을 위임했다.</p>
<p>먼저 etc/ssh/sshd_config 파일의 다음 내용들을 변경해준다.</p>
<pre><code class="language-bash"># root 로그인 완전 차단
PermitRootLogin no

# 비밀번호 인증 비활성화
PasswordAuthentication no

# 키 기반 인증만 허용
PubkeyAuthentication yes

# Challenge-response (keyboard-interactive) 인증 비활성화
ChallengeResponseAuthentication no

# PAM 인증 사용 (Ubuntu 기본값)
UsePAM yes</code></pre>
<p>만약 sshd_config파일 상단에 다음 문구(<code>Include /etc/ssh/sshd_config.d/*.conf</code>)가 있다면 sshd_config.d/*.conf 파일을 찾아내어 그 부분도 수정해줘야 한다.</p>
<p>이때 변경한 부분의 주석은 떼어낸다.
추가적으로 권한 설정이 되어있는지 확인하고 다음 권한으로 설정한다. </p>
<pre><code class="language-bash">chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys</code></pre>
<p>그리고 설정 문법을 검사해주고, ssh 서비스를 재시작한다.</p>
<pre><code class="language-bash">sudo sshd -t

sudo systemctl restart ssh
</code></pre>
]]></description>
        </item>
        <item>
            <title><![CDATA[btop으로 VM의 상태 확인하기]]></title>
            <link>https://velog.io/@songwoo-yu/btop%EC%9C%BC%EB%A1%9C-VM%EC%9D%98-%EC%83%81%ED%83%9C-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@songwoo-yu/btop%EC%9C%BC%EB%A1%9C-VM%EC%9D%98-%EC%83%81%ED%83%9C-%ED%99%95%EC%9D%B8%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 05 Jan 2026 03:42:38 GMT</pubDate>
            <description><![CDATA[<p>이전에 <code>top</code>나 <code>htop</code>과 같이 서버의 리소스 사용량을 확인하는 툴들을 가끔 사용했었다. 근데 이번에 새롭게 <code>btop</code>을 알게 되어 설치 방식과 사용 방식에 대해 정리해보려고 한다.</p>
<h3 id="install-btop">install btop</h3>
<p>먼저 데비안 계열을 많이들 사용한다. 나도 우분투 서버이기에 apt를 이용하여 설치해준다.</p>
<pre><code class="language-bash">sudo apt install btop</code></pre>
<h3 id="기본튤-top">기본튤 top</h3>
<p><code>top</code>은 기본 설치되어있기에 그냥 명령어만 치면 나온다. 아래와 같이 굉장히 전문적인 분들만 보기 쉬울 것 같이 생겼다. 계속 뭔가 변하기 때문에 보기가 어렵다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/375890b9-08bb-4066-9f8f-6f75832a1f83/image.png" alt=""></p>
<p>이렇게 한눈에 보기 어렵다는 단점(cli로 하나하나 찾아보는 것보다는 훨씬 쉽다...)을 극복하기 위해 htop과 btop이 나왔다. 그 중 오늘은 btop을 볼 것이다.</p>
<h3 id="btop-실행"><code>btop</code> 실행</h3>
<p>접속한 vm에서 <code>btop</code>을 입력하게 되면 아래와 같이 아주 보기 쉬운 GUI로 CPU 및 디스크 사용량, 메모리 점유율, 네트워크 트레픽, 프로세스 등에 대해 보여준다.</p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/4834879b-651a-4a1d-816d-00bb47e47130/image.png" alt=""></p>
<h3 id="뭐가-더-나은가">뭐가 더 나은가</h3>
<p>나는 아직 초보자라 그래픽 기반으로 보는 것이 더 편하긴 하다. 그러나 레딧을 좀 보다보면 top, htop이 편하고 더 정확하다는 의견들이 있으니 참고하면 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[플러터 앱을 Apple TestFlight에 배포하기]]></title>
            <link>https://velog.io/@songwoo-yu/%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%95%B1%EC%9D%84-Apple-TestFlight%EC%97%90-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@songwoo-yu/%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%95%B1%EC%9D%84-Apple-TestFlight%EC%97%90-%EB%B0%B0%ED%8F%AC%ED%95%98%EA%B8%B0</guid>
            <pubDate>Mon, 29 Dec 2025 09:46:55 GMT</pubDate>
            <description><![CDATA[<h3 id="1-빌드-전-준비">1. 빌드 전 준비</h3>
<h4 id="1-버전-정보-변경">(1) 버전 정보 변경</h4>
<p><code>pubspec.yaml</code>의 version 정보를 변경해준다.</p>
<h4 id="2-번들-id-확인">(2) 번들 id 확인</h4>
<p>App Store Connect에서 정확한 번들 ID 확인한다. 나의 앱에서 프로젝트를 선택하고, 왼쪽 메뉴에서 일반 정보 - 앱 정보를 클릭한다.
Xcode에서 builder identifier이 일치하는지 확인하고 일치하지 않으면 변경해준다.</p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/764010db-f663-4472-a3cd-bf12ad36c5bd/image.png" alt=""></p>
<h3 id="앱-빌드">앱 빌드</h3>
<h4 id="makefile을-사용하는-방식">Makefile을 사용하는 방식</h4>
<p>Makefile을 만들어서 make build-ipa라는 명령어를 만든다. 이 명령어는 clean-build, deps(flutter pub get), check-cocapods &amp; ios-pods, flutter build ipa를 수행한다.</p>
<h4 id="수동-방식">수동 방식</h4>
<p><code>flutter build ipa --flavor production -t lib/main.dart</code></p>
<p>이 과정이 완료되면 build/ios/ipa/aivue_mobile.ipa 경로에 파일이 생성된다.</p>
<h3 id="xcode에-서명확인">Xcode에 서명확인</h3>
<p><code>open ios/Runner.xcworkspace</code>으로 Xcode를 열어준다. 앞서 확인한 번들 id와 여러 정보들을 확인한다.</p>
<h3 id="testflight에-업로드">testflight에 업로드</h3>
<p>Xcode에서 product &gt; archive를 선택한다. 이를 통해 빌드가 이뤄지고, 끝나면 organizer 창이 열린다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/8f860013-fdc4-40dd-a456-eb3c0fc1f02b/image.png" alt="">
<img src="https://velog.velcdn.com/images/songwoo-yu/post/1ef9b47a-5292-4ac9-bf1f-7f0b026c63c9/image.png" alt=""></p>
<p>열린 창에서 distribute app을 누른다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/ee06d97e-87cf-4568-b703-9893d5269918/image.png" alt=""></p>
<p>그리고 testfight only를 눌러준다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/fabadfb8-1bce-4a17-8ce2-6fb5e5927521/image.png" alt="">
이후에 앱 이름이 runner로 표기될 수 있지만, 고유한 이름으로 변경해줘야 한다. 이때 내가 만든 앱의 이름이 항상 같아야 하나로 인식되므로 유의해야 한다. 나의 경우 전에는 AiVue로 했다가 mobile을 붙였더니 다른 앱을 떠서 한참을 찾아봤던 기억이 난다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/f847b4c4-b82e-4020-9cdf-ae8f596bedf4/image.png" alt=""></p>
<p>하여간 이런 창이 나온다면 sku가 잘못 설정되어 새로운 app을 만들려고 하거나 그러는 것이므로 확인해볼 필요가 있다.</p>
<h3 id="app-store-connect에서-확인">App Store Connect에서 확인</h3>
<p>로그인 후에 TestFlight에 들어가보면 해당 앱이 업로드되어 있을 것이다. 만약 노란색으로 진행중이라면 좀 기다려준다.</p>
<p>빌드 옆의 &#39;수출 규정 관련 문서 누락&#39; 메시지가 뜨면 클릭하여 &quot;해당 사항 없음&quot; 등을 체크하고 완료해줘야 한다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/204014b6-649c-432d-a758-c6e57ec7e4af/image.png" alt=""></p>
<p>그룹에 초대까지 해주면 끝난다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/5c5c3cb5-78f2-44bd-b20a-a3e3ce42b841/image.png" alt=""></p>
<p>이제 메일로 날라온 코드를 ios 기기의 testflight앱에 등록해주면 된다. 그러면 해당 앱을 내 기기에서 테스트해볼 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[구글의 새로운 IDE, Antigravity]]></title>
            <link>https://velog.io/@songwoo-yu/%EA%B5%AC%EA%B8%80%EC%9D%98-%EC%83%88%EB%A1%9C%EC%9A%B4-IDE-Antigravity</link>
            <guid>https://velog.io/@songwoo-yu/%EA%B5%AC%EA%B8%80%EC%9D%98-%EC%83%88%EB%A1%9C%EC%9A%B4-IDE-Antigravity</guid>
            <pubDate>Mon, 29 Dec 2025 09:12:08 GMT</pubDate>
            <description><![CDATA[<p>오늘은 VSCode를 기반으로 만들어진 새로운 AI 코드 에디터인 Antigravity를 설치하고 간단하게 사용해보려고 한다.</p>
<h3 id="dmg-파일-받기">dmg 파일 받기</h3>
<p>mac에서는 <a href="https://antigravity.google/download">안티그래피비 공식 홈페이지</a>에서 받은 dmg 파일을 더블 클릭, 드레그&amp;드롭으로 설치해준다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/f532741d-857e-400f-b947-f117a7f8565e/image.png" alt=""></p>
<p>본인이 사용하는 OS와 버전(나의 경우 애플 실리콘으로 선택해야 한다.)에 맞게 다운로드를 한다.</p>
<h3 id="기본-설정">기본 설정</h3>
<p>기본적으로 VSC나 Cursor를 사용하고 있다면, 그 설정을 불러와 사용하는 것이 편리하다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/5d7a181b-89c7-43dc-bfa8-d12732e7d10f/image.png" alt=""></p>
<p>눈이 아픈 나는 Dark 모드를 버릴 수 없다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/f7431293-b490-4b75-9756-c278d2d8f342/image.png" alt=""></p>
<p>이제 본격적으로 AI Agent의 자유도(개입)을 얼마나 허용할 것인지 선택해준다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/952c0c37-2eb7-432b-af9e-f4c729ed73f3/image.png" alt=""></p>
<p>가장 먼저 secure mode의 경우 에이전트가 터미널 명령어 실행, 브라우저 제어, 파일 수정 등을 할 때마다 매번 사용자의 승인을 받고 동작한다.. 보안이 가장 강력하지만 하나하나 물어보기 때문에 시간적으로 제약이 생길 수 있다.</p>
<p>다음으로 Review-driven(Recommended)의 경우는 에이전트가 어느 정도 자율적으로 작업을 진행하되, 주요 아티팩트(계획서, 주요 코드 변경 등)에 대해 사용자 리뷰를 요청하는 모드이다. 나의 경우 이를 선택할 것이다. 여기서도 옵션이 존재하는데, Terminal execution policy는 에이전트가 터미널에서 명령어(npm install, flutter build 등)를 실행할 권한을 의미한다.Request Review를 유지해주도록 한다. 그 이유는 패키지를 잘못 설치해도 의존성이 꼬이는 경우가 꽤 있어 무시할 수 없기 때문이다.
Review policy는 코드 수정이나 작업 계획을 확정하기 전 사용자에게 보여줄지 여부로 이것도 리뷰하도록 했고, JavaScript execution policy도 에이전트가 샌드박스 환경이나 브라우저에서 JS 코드를 실행할 권한으로 리뷰를 유지하도록 했다. </p>
<p>그리고 Agent-driven은 에이전트에게 높은 자율성을 부여한다. 사용자의 개입을 최소화하고 에이전트가 스스로 판단하여 워크플로우를 빠르게 실행한다.</p>
<p>마지막으로 Custom은 사용자가 터미널 권한, 파일 수정 권한 등을 세부적으로 직접 설정한다. 이 경우 많은 경험이 있고 귀찮음을 감수할 수 있다면 실행한다.</p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/df323d2d-cf25-4af9-9023-cda6d82c1d9b/image.png" alt=""></p>
<p>이 부분은 키 바인딩과 확장 프로그램 설치, 커맨드 도구를 설정하는 부분이다. 먼저 바인딩의 경우 gui 에디터의 표준 단축기 시스템을 사용할 것인지, 리눅스에서 사용하는 vim 편집기의 명령어 모드를 사용할 것인지 묻는 것인데, normal로 하는 것이 신상에 좋다...</p>
<p>그리고 우리가 docker나 js, python등을 사용할 때, extension을 설치하여 사용하는 것으로 자동으로 해주는 것이다. 언어별 확장 기능을 자동으로 설치해주는 기능이므로 유지한다.</p>
<p>마지막으로 커맨드 라인 도구는 terminal에서 code .으로 해당 디렉토리를 vscode 에디터로 여는 것과 같이 <code>agy .</code>으로 열 수 있게 만들어주는 부분이므로 설치해주면 된다.</p>
<h3 id="ui-및-사용성">UI 및 사용성</h3>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/bbc3e1bc-1112-4a52-9319-4937cda59d1a/image.png" alt=""></p>
<p>대충 봐도 VSC와 거의 유사하다. cursor의 경우 좀 달라서 적응하기 아직도 힘든데, 여긴 깔끔하다. </p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/d9324538-ea03-4bd2-a4e5-e58810e49326/image.png" alt=""></p>
<p>에이전트도 잘 골라서 사용할 수 있다. 기본적으로 gemini가 당연히 주역인 듯하다. 그래도 클로드 thinking 모델과 gpt 오픈 모델이 내장되어 있어 사용할 수 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[ComfyUI에서 ReActor로 얼굴 교체하기]]></title>
            <link>https://velog.io/@songwoo-yu/ComfyUI%EC%97%90%EC%84%9C-ReActor%EB%A1%9C-%EC%96%BC%EA%B5%B4-%EA%B5%90%EC%B2%B4%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@songwoo-yu/ComfyUI%EC%97%90%EC%84%9C-ReActor%EB%A1%9C-%EC%96%BC%EA%B5%B4-%EA%B5%90%EC%B2%B4%ED%95%98%EA%B8%B0</guid>
            <pubDate>Fri, 19 Dec 2025 08:08:40 GMT</pubDate>
            <description><![CDATA[<h3 id="comfyui-reactor이란">ComfyUI, ReActor이란?</h3>
<p>ComfyUI는 여러 확산 모델을 통해 결과물을 생성하는 노드 방식의 Open Source GUI 서비스이다. 노드 기반의 그래픽 인터페이스라서 전체적인 작업 흐름을 쉽게 파악하고 커스텀할 수 있다고 한다. </p>
<p>ReActor은 Roop의 후속 프로젝트로 ComfyUI에서 가장 널리 쓰이는 얼굴 교체 도구라고 한다. ONNX 기반이기에 CPU만으로 동작하고, 한 이미지에서 여러 얼굴을 동시에 교체할 수 있게 된다. 또한 얼굴 복원 기술과 모델 저장 기술이 있다. 성별을 감지하고 교체하는 기능도 존재한다.</p>
<h3 id="install-comfyui">Install ComfyUI</h3>
<p>먼저 <a href="https://www.comfy.org/download">ComfyUI</a>를 다운로드한다. 나의 경우 Apple Silicon Mac이기에 Download for Mac을 선택했다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/943faf56-acf0-4791-9459-3c35122a17ce/image.png" alt=""></p>
<p>맥에서 dmg 설치는 늘 그렇듯 drag&amp;drop으로 처리해준다. 설치 시 시간이 좀 걸리기는 한다.</p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/ea941b8f-6e3a-4027-bf94-1503f458ef45/image.png" alt=""></p>
<h3 id="reactor-확장">ReActor 확장</h3>
<p>설치된 ComfyUI 앱을 열어준다. 그런 후에 좌측 하단의 톱니를 눌러 setting창을 열고, keybinding 탭을 누른다. 그러면 막 여러가지 옵션과 단축기를 설정할 수 있는 부분이 나오는데, 여기서 <code>custom nodes manager</code>을 검색하고 <code>ctrl + shift + G</code>(원하는 키)를 설정해준다.
이후에 그 키를 눌러 <code>Discover Community-made node Packs, Extensions, and more...</code>을 열어준다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/28101f6d-4e35-4fa7-9726-7a07c885e3c4/image.png" alt=""></p>
<p>그런 후에 위 사진처럼 ReActor을 검색, 최상단의 ComfyUI-ReActor을 install한다. 이후 재시작을 해주면 된다.</p>
<h3 id="실습">실습</h3>
<p>일단 먼저 사진 두 가지를 다운받는다. 나의 경우 아리아나 그란데를, 사부님은 쵸단을 골랐다. 이제 쵸단의 사진에 아리아나 그란데의 얼굴을 이식해보려고 한다.</p>
<p>일단 새로운 workflow를 생성한 다음에, 더블클릭해준다. 그러면 위와 같이 노드의 종류와 검색할 수 있는 창이 뜨게 된다. 여기서 입력층은 Load Image로 두 개를 만들어준다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/29e9ec9d-e004-43c6-b538-733c1f0fbc16/image.png" alt=""></p>
<p>두 가지를 처리해주는 모델(은닉층)을 중간에 넣어준다. 이때도 더블 클릭하여 ReActor을 검색한 후, 생성해준다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/c0e65463-7779-464a-a4b8-0df0f35691e1/image.png" alt=""></p>
<p>일단 경로를 드레그&amp;드랍으로 image를 input과 source와 연결해주고, 그런 후에 갖가지 파라미터를 열심히 만지면서 테스트해준다. </p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/2e79737d-09f9-4aa5-bebd-9a371f942988/image.png" alt=""></p>
<p>마지막으로 save image를 만들어서 swapped와 연결해주면 끝난다. run을 돌리면 좀 엉성하지만 괜찮은 이미지가 빠르게 나오게 된다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/11b438e5-0b59-4aa4-b30c-9473c36229f2/image.png" alt=""></p>
<p>이렇게 생성된 모델은 따로 저장할 수도 있고, 서비스용으로 사용할 수도 있다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[아이폰(아이패드)에 플러터 앱 실행하기(feat. 개발자 모드 활성화)]]></title>
            <link>https://velog.io/@songwoo-yu/%EC%95%84%EC%9D%B4%ED%8F%B0%EC%95%84%EC%9D%B4%ED%8C%A8%EB%93%9C%EC%97%90-%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%95%B1-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0feat.-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%AA%A8%EB%93%9C-%ED%99%9C%EC%84%B1%ED%99%94</link>
            <guid>https://velog.io/@songwoo-yu/%EC%95%84%EC%9D%B4%ED%8F%B0%EC%95%84%EC%9D%B4%ED%8C%A8%EB%93%9C%EC%97%90-%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%95%B1-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0feat.-%EA%B0%9C%EB%B0%9C%EC%9E%90-%EB%AA%A8%EB%93%9C-%ED%99%9C%EC%84%B1%ED%99%94</guid>
            <pubDate>Fri, 19 Dec 2025 01:57:31 GMT</pubDate>
            <description><![CDATA[<h3 id="개발자-모드-활성화하기">개발자 모드 활성화하기</h3>
<p>일단 ios 기기를 USB 포트를 통해 맥에 연결한다. 처음 연결하게 되면 Trust This Computer?/Trust This device라는 문구가 뜨는데, 잘 확인하고 trust를 선택해준다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/ddaf60fa-c58e-4636-8183-49ef8504d1a0/image.png" alt=""></p>
<p>이후에 xcode를 실행하고, 위의 window tab에서 device and simulators를 눌러준다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/95bc47f3-0123-4bce-b9ac-ab22ff3d2a1e/image.png" alt=""></p>
<p>그러면 아래와 같이 연결된 디바이스에 대한 목록이 검색된다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/41ed625e-e738-4781-9892-c48653a1ec0c/image.png" alt=""></p>
<p>이후 아이폰에 들어가서 설정 &gt; 개인정보 보호 및 보안 &gt; 개발자 모드 &gt; on 을 통하여 설정할 수 있다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/630c2b18-f190-4eff-a689-5aad2b237400/image.png" alt=""></p>
<p>재시동을 해주고, 화면을 켜주면 비밀번호를 요구하면서 개발자모드를 실행할 것인지 물어보게 된다. 이후에 개발자 계정의 인증서를 기기에 업로드해주면 개발 준비가 대부분 끝나게 된다.</p>
<h4 id="xcode-개발자-인증서-서명">Xcode 개발자 인증서 서명</h4>
<p>Setting으로 접속하여 Apple Accounts에서 sign in to an apple account에서 add apple account를 통해 개발자 계정을 연결해준다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/7bcdd36a-71d3-4361-ad45-460305a6d829/image.png" alt=""></p>
<p>그 아래에 Teams에 초대된 그 그룹이 있는지를 먼저 확인해줘야 한다. 그 다음으로 Runner Target을 지정해줘야 한다. 플러터 터미널에서 아래 명령어를 작성하고, Runner &gt; Targets &gt; runner를 들어간다. 여기서 team과 bundle identifier을 작성해준다.</p>
<pre><code class="language-bash">open ios/Runner.xcworkspace</code></pre>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/c15d4838-f2af-47e7-adcc-e6e1906754d4/image.png" alt=""></p>
<p>이때 bundle identifier은 소스에서 ios/Flutter/Appframeworkinfo.plist의 <string> tag 사이의 내 고유한 문자를 집어넣어주고 그거대로 넣어주면 된다. 디폴트로 넣어주면 에러 난다.</p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/9a6b1042-3693-4aaa-b333-6c89f4a6c036/image.png" alt=""></p>
<h4 id="ios-development-인증서-확인">ios development 인증서 확인</h4>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/d3b7cbd7-6d66-45ea-a14b-e97f4468350a/image.png" alt="">
여기서 인증서가 있다면 넘어가고, 없다면 +를 눌러 등록한다.</p>
<h4 id="xcode에서-run-기기에서-허용">Xcode에서 run, 기기에서 허용</h4>
<p>  다음 버튼을 눌러주면 이제 핸드폰에서 위치권한등을 받고 내가 만든 앱이 실행된다.
  <img src="https://velog.velcdn.com/images/songwoo-yu/post/0a6a4539-d56e-4661-a9a7-0ca689f8cbdc/image.png" alt=""></p>
<h4 id="vsc를-재실행">VSC를 재실행</h4>
<p>VSC를 quit했다가 다시 시작해주면 select device에서 ios를 찾을 수 있게 된다. </p>
<pre><code class="language-bash">$ flutter devices</code></pre>
<p>이렇게 되면 아래와 같이 찾은 목록들이 나오게 된다. </p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/1a874003-f8f8-4370-8b88-f6b82e6a1283/image.png" alt=""></p>
<p>디바이스를 맞추고, 이제 Run and Debug를 눌러보면, 되야하는데 안될수도 있다.</p>
<h4 id="mac-os의-설정을-변경하든가-vscxcode-재시작">Mac os의 설정을 변경하든가, VSC/Xcode 재시작</h4>
<p>macOS 설정 열기 &gt; Privacy &amp; Security &gt; Automation</p>
<p>Visual Studio Code(flutter)에 xcode가 체크 on되어 있어야 한다. 안 된다면 VS Code와 Xcode 둘 다 완전히 종료(quit)하고 vsc를 열어 flutter run 한 번 실행해준다. 이때 권한 팝업 뜬다면 허용해준다. 안 떠도 아마 ios 기기에 올라올 가능성도 높다. </p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Apple Developer 계정 등록 시 주의사항]]></title>
            <link>https://velog.io/@songwoo-yu/Apple-Developer-%EA%B3%84%EC%A0%95-%EB%93%B1%EB%A1%9D-%EC%8B%9C-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD</link>
            <guid>https://velog.io/@songwoo-yu/Apple-Developer-%EA%B3%84%EC%A0%95-%EB%93%B1%EB%A1%9D-%EC%8B%9C-%EC%A3%BC%EC%9D%98%EC%82%AC%ED%95%AD</guid>
            <pubDate>Thu, 18 Dec 2025 07:43:33 GMT</pubDate>
            <description><![CDATA[<h3 id="계정-초대-url에서-계정을-만들지-말자">계정 초대 url에서 계정을 만들지 말자</h3>
<p>기존에 기기에 로그인된 계정은 개인 계정이라 공적으로 사용하는 이메일로 초대를 받게 되었다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/2faf37c8-8ee3-4013-8cf9-378850ccaf1c/image.png" alt=""></p>
<p>Accept invitation을 누르게 되면 해당 id가 있다면 로그인 창으로 넘어가지만, 그렇지 않다면 developer 계정을 생성하는 곳으로 넘어가게 된다. 그때 모든 정보를 입력하고 continue를 누르게 된다면 어떤 오류도 나오지 않고 화면이 멈추게 된다. 개발자 도구로 분석한 결과 Apple CDN 리소스 로딩 실패로 이어지면서 409 / 412 에러가 발생하게 된다. 즉 이 세션에서 기대하는 인증 상태와 실제 상태가 불일치하여 멈추게 되는 것이다. success - rpc: ready 복구 스크립트는 돌고 있는데, 상태 전환이 안 되는 초유의 사태인 것이다.</p>
<h3 id="미리-계정을-만들라">미리 계정을 만들라</h3>
<p>그렇다면 해당 아이디로 계정을 미리 만드는 방식은 어떨까? 찾아보니 이 방식이 정배라고 한다. 따라서 해당 계정을 만들고 다시 시도! 이번에는 로그인 하란다
<img src="https://velog.velcdn.com/images/songwoo-yu/post/e85138c9-ab24-412f-98e6-e0b2a85eeb80/image.png" alt=""></p>
<p>이제 넘어가면 해결이다?
아니다 여기서 그냥 넘어가면 또 약관을 확인해줘야 하는데 같은 문제가 발생한다.
그래서 고객센터에 연락한 결과 music이나 moive 등 apple의 다른 서비스에 접속하여 새로운 계정으로 로그인하면 약관동의를 할 수 있단다.
그런데 나의 경우 2중 인증으로 핸드폰 메세지로 6자리 난수가 날라오게 되는데, 10번 이상 했더니 더 이상 24시간 동안은 인증이 안 된단다... 따라서 핸드폰에 apple developer 앱을 설치하고 그곳에서 모든 약관 동의를 완료했다.</p>
<h4 id="모든-설정이-끝난-developer-계정으로-초대를-받아라">모든 설정이 끝난 developer 계정으로 초대를 받아라</h4>
<p>이렇게 모든 설정(약관 동의)까지 마친 후에 이메일에서 초대 링크를 클릭하여 로그인하고, 등록해주면 된다. 이때도 2중 인증이 있기 때문에 조심해야 한다. 나의 경우 이중 인증 횟수를 초과해서 시간이 지난 후에 다시 인증하라는 상담사의 안내가 있었다. 찾아보니 24시간 후에 재시도하라고 나오던데, 그새를 못참고 또 로그인했었다. 내 경험상 24시간은 아니고 12시간 정도인 듯하다.</p>
<h4 id="초대-이후-약관-서명을-완료하면-끝">초대 이후, 약관 서명을 완료하면 끝</h4>
<p>초대 받은 url로 접속하여 로그인하게 되면, 라이선스 계약을 갱신하라는 이야기가 나온다. 이를 확인한 후에 넘어가면 해당 팀에 속한 개발자가 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[안드로이드에서 플러터 앱 실행하기]]></title>
            <link>https://velog.io/@songwoo-yu/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%97%90%EC%84%9C-%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%95%B1-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0</link>
            <guid>https://velog.io/@songwoo-yu/%EC%95%88%EB%93%9C%EB%A1%9C%EC%9D%B4%EB%93%9C%EC%97%90%EC%84%9C-%ED%94%8C%EB%9F%AC%ED%84%B0-%EC%95%B1-%EC%8B%A4%ED%96%89%ED%95%98%EA%B8%B0</guid>
            <pubDate>Thu, 18 Dec 2025 06:03:36 GMT</pubDate>
            <description><![CDATA[<h3 id="안드로이드-스튜디오-및-sdk-설치">안드로이드 스튜디오 및 SDK 설치</h3>
<p>먼저 <a href="https://developer.android.com/studio">Android Studio</a>를 본인의 PC version에 맞게 설치한다.</p>
<p>그리고 setting &gt; Languages&amp;Frameworks &gt; Android SDK로 이동한다.</p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/f338fab2-63a2-4d0b-9aa3-4066c1b9a6cb/image.png" alt=""></p>
<p>먼저 SDK Platforms tab에서 Android 16.0 시리즈(API Level 36)을 선택하고 apply해준다.</p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/c7646815-c467-400a-aa6c-3376e0ada8e9/image.png" alt=""></p>
<p>다음으로 SDK Tools에서 Android SDK Build-Tools, Android SDK Command-line Tools, Android Emulator, Android SDK Platform-Tools를 체크하고 apply해준다. 다 설치하는 작업을 거치고 나서는 path에 등록해준다. path 등록이 되지 않는 경우 gladle 문제라고 인식하고 에러가 발생할 가능성이 높아진다.</p>
<h3 id="vscode에서-실행하기">VSCode에서 실행하기</h3>
<h4 id="1-안드로이드-장치-연결하기">1. 안드로이드 장치 연결하기</h4>
<p>디버그 모드로 실행하기 위해서는 안드로이드 기기와 연결해줘야 한다. 먼저 케이블로 연결한 후 각각의 장치에서 서로를 신뢰할 수 있는지 물어본다. 확인 후 기기의 설정에서 태블릿 정보로 들어간다. 이후에 소프트웨어 정보 누른 후 빌드번호 부분을 계속해서 클릭한다. 한 여덟 번 누르게 되면 개발자 옵션이 활성화된다. 여기서 개발자 모드를 활성화한 후 USB 디버깅을 허용해준다. 그렇게 되면 기기에서도 연결된 장치에 대해 한 번 더 물어보게 된다. 이후에 안드로이드 스튜디오에 들어가 장치가 잘 인식되는지 확인해주면 된다.</p>
<h4 id="2-sdk-라이선스-검토-및-서명">2. SDK 라이선스 검토 및 서명</h4>
<p>Android Studio에서 여러 SDK를 설치했다. 이를 사용하기 위해서는 라이선스에 서명해줘야 한다. 이를 위해 다음과 같은 명령어를 작성해준다.</p>
<pre><code class="language-zsh">flutter doctor --android-licenses</code></pre>
<h4 id="3-개발환경-확인">3. 개발환경 확인</h4>
<pre><code class="language-zsh">flutter doctor</code></pre>
<p>위 명령어를 통해 tool chain에 문제가 없는지 확인하게 된다.
그러면 이제 다음과 같이 연결된 개발환경 설정들에 문제가 없는지 나오게 된다.</p>
<pre><code class="language-bash">Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.38.5, on macOS 15.7.2 24G325 darwin-arm64, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK version 35.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 26.1.1)
[✓] Chrome - develop for the web
[✓] Connected device (2 available)</code></pre>
<h4 id="4-기기-확인">4. 기기 확인</h4>
<pre><code class="language-zsh">flutter devices</code></pre>
<p>이를 통해 연결된 기기들에 대한 정보가 나오게 된다. </p>
<p>나의 경우 Found 4 connected devices 라면서 mac os, ios, android, chrom 이렇게 4가지가 개발 가능한 상태의 기기로 뜬다.</p>
<p><code>command + shift + p</code>에서 flutter: select device로 기기를 android로 맞춰준 다음에 Run&amp;Debug(or <code>flutter run</code>)으로 실행시켜주면 디버그 모드로 기기에 플러터 앱이 뜨게 된다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Flutter with Apple Device]]></title>
            <link>https://velog.io/@songwoo-yu/Flutter-with-Apple-Device</link>
            <guid>https://velog.io/@songwoo-yu/Flutter-with-Apple-Device</guid>
            <pubDate>Thu, 18 Dec 2025 02:31:42 GMT</pubDate>
            <description><![CDATA[<h3 id="플러터로-애플-기기용-앱-개발-시작하기xcode">플러터로 애플 기기용 앱 개발 시작하기(Xcode)</h3>
<p>기본적으로 설치한 Flutter SDK만으로는 애플 기기에 접근하거나 애플 기기용으로 만들수가 없다. X code로 build하는 과정이 필요하기 때문이다. 이를 위해 Xcode를 설치하고 path에 등록해줘야 한다. </p>
<h4 id="1-xcode-설치">1. Xcode 설치</h4>
<p><a href="https://developer.apple.com/xcode/">https://developer.apple.com/xcode/</a> 이곳에서 설치할 수 있다. 
나의 경우 이미 설치는 되어 있는데 정식 개발환경으로 초기화되어 있지 않았다. 따라서 Setup을 해줘야 하는 상황이다.</p>
<h4 id="2-xcode-setup--license">2. Xcode setup &amp; license</h4>
<pre><code class="language-zsh">sudo sh -c &#39;xcode-select -s /Applications/Xcode.app/Contents/Developer &amp;&amp; xcodebuild -runFirstLaunch&#39;</code></pre>
<p>먼저 xcode-select는 개발자 도구의 기준을 xcode로 변경한다는 명령어이고, xcodebuild는 최초 실행 시 필요한 초기 설정을 자동으로 실행하는 명령이다. </p>
<p>이 과정을 거치고, 위에서 이미 되었겠지만 혹시 모르니 xcode 라이선스를 검토하고 서명해줘야 한다.</p>
<pre><code class="language-zsh">sudo xcodebuild -license</code></pre>
<h4 id="3-필수-도구-다운로드">3. 필수 도구 다운로드</h4>
<p>ios 플랫폼 지원 및 최신 ios 시뮬레이터 런타임을 다운로드하기 위함이다.</p>
<pre><code class="language-zsh">xcodebuild -downloadPlatform iOS</code></pre>
<p>무려 8GB나 된다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/9a9a7c32-3575-425e-9012-c9fd9582e419/image.png" alt=""></p>
<h4 id="4-install-rosetta">4. install Rosetta</h4>
<p>ARM(Apple Silicon)에서 개발하는 경우 Rosetta2를 설치해야 한다. Flutter 자체는 ARM 네이티브를 잘 지원하지만, Xcode 내부 일부 도구가 x86_64로만 제공되거나 CocoaPods / Ruby gem일 경우, iOS 시뮬레이터 관련 문제가 있는 경우에 이를 설치해야 한다. 다만 실무에서 사용하고 있다면 혹시 모를 상황에 대비하는 보험같은 느낌이다.</p>
<h4 id="5-cocoapods--apple-네이티브-라이브러리-관리자">5. CocoaPods : apple 네이티브 라이브러리 관리자</h4>
<p>플러터 플러그인 중 네이티브 코드가 포함된 것들을 연결시켜주는 라이브러리 관리자로 카메라, 비디오 플레이어 등을 사용하기 위해서는 설치해주는 것이 좋다.</p>
<pre><code class="language-zsh">brew install cocoapods</code></pre>
<h4 id="6-path-설정">6. PATH 설정</h4>
<p>이전에 안 했던 flutter의 path설정을 이번에 해보겠다.
설치한 Flutter SDK의 위치를 찾고, <code>.zshrc</code>의 맨 아래에 <code>export Path=&quot;$PATH:$HOME/(SDK 위치)</code> 이렇게 추가해준다. 이후에 <code>ctrl + O</code>를 하고 enter, <code>ctrl + x</code>로 마무리해준다. 그러면 편집기를 나와서 <code>source ~/.zshrc</code>로 적용해준다.</p>
<h4 id="7-확인">7. 확인</h4>
<pre><code class="language-zsh">➜  ~ flutter --version
flutter doctor

Flutter 3.38.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision f6ff1529fd (6 days ago) • 2025-12-11 11:50:07 -0500
Engine • hash c108a94d7a8273e112339e6c6833daa06e723a54 (revision 1527ae0ec5) (6 days ago) • 2025-12-11
15:04:31.000Z
Tools • Dart 3.10.4 • DevTools 2.51.1
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 3.38.5, on macOS 15.7.2 24G325 darwin-arm64, locale en-US)
[✗] Android toolchain - develop for Android devices
    ✗ ANDROID_HOME = /Users/songwoo/Android/Sdk
      but Android SDK not found at this location.
[✓] Xcode - develop for iOS and macOS (Xcode 26.1.1)
[✓] Chrome - develop for the web
[✓] Connected device (2 available)
[✓] Network resources

! Doctor found issues in 1 category.</code></pre>
<p>현재 안드로이드를 제외한 모든 부분이 설정이 완료되었다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Starting Flutter]]></title>
            <link>https://velog.io/@songwoo-yu/Starting-Flutter</link>
            <guid>https://velog.io/@songwoo-yu/Starting-Flutter</guid>
            <pubDate>Thu, 18 Dec 2025 01:49:08 GMT</pubDate>
            <description><![CDATA[<h3 id="flutter-시작하기">Flutter 시작하기</h3>
<p>오늘은 Flutter에 입문하기 위해 개발환경을 조성하고, &quot;Hello World&quot;를 찍는 정도를 목표로 한다. 기본적으로 <a href="https://docs.flutter.dev/get-started/quick?_gl=1*i3wmbj*_ga*MjIyMTczNjE5LjE3NjU5NTQyMjg.*_ga_04YGWK0175*czE3NjU5NTQyMjgkbzEkZzAkdDE3NjU5NTQyMjgkajYwJGwwJGgw">Flutter Docs</a>를 참고하여 개발환경을 조성하는 것부터 시작하겠다.</p>
<h3 id="개발환경-조성">개발환경 조성</h3>
<h4 id="1-git-ide-설치하기">1. Git, IDE 설치하기</h4>
<p>개발을 시작하는 사람들이라면 대부분은 설치되어 있을 것이다. 일단 MAC OS 기준으로 진행하니, 리눅스나 윈도우즈를 사용 중이라면 공식 홈페이지를 참고하여야 한다. 먼저 깃을 설치하기 위해서는 homebrew를 사용하는 방식과 xcode를 사용하는 방식이 대표적이다. 플러터에서는 xcode를 사용하는 방법을 안내하고 있다. </p>
<pre><code class="language-zsh">xcode-select --install</code></pre>
<p>이후에 VSC를 권장하는데, 여기서 IntelliJ나 안드로이드 스튜디오만을 이용해도 된다고는 한다.
일반적인 방식인 VSC를 받는 방식은 간단하다 그저 인터넷에 <a href="https://code.visualstudio.com/download#">download vscode</a>라고 검색하면 웹이 나온다. 
여기서 본인의 OS에 맞는 것을 선택하면 된다.</p>
<h4 id="2-vsc-extension--flutter-설치하기">2. VSC Extension : Flutter 설치하기</h4>
<p>다음으로 vscode의 익스텐션에서 플러터를 검색하면 다음과 같이 Dart Code 인증을 받은 플러터 익스텐션이 바로 검색된다. 이를 install 해준다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/6d20e8d1-a2d5-4012-bc4e-1b69fe318947/image.png" alt=""></p>
<h4 id="3-start-new-project">3. Start New Project</h4>
<p>VSCode에서 <code>command</code>+<code>shift</code>+<code>p</code>를 눌러 명령 팔레트를 열어준다. 여기서 new project를 눌러준다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/edcafec4-83d9-4a64-9c88-a4eeda40c326/image.png" alt="">
그러면 우측 하단에 플러터 SDK를 다운로드할 것인지 물어보게 된다. 바로 Download <img src="https://velog.velcdn.com/images/songwoo-yu/post/69823162-ed3b-4fa4-93b0-64d7f2b4eb4d/image.png" alt=""></p>
<p>경로를 설정해주라고 하는데, 찾기 쉬운 위치에 해주면 좋다. 나의 경우 <code>(user)/documents/flutter</code>에 설정했다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/c6e3820c-3c1f-4173-8f07-9670f12f7744/image.png" alt=""></p>
<p>설치가 완료되면 Flutter SDK를 PATH에 등록할지 물어본다고 하는데, 나의 경우 그런 문구가 나오지 않았다. 일단 플러터 앱을 만들어보고 안 되면 패스에 수동으로 등록해보면 될 듯 하다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/3276ce1c-0a64-43ee-a860-f9db4504afaf/image.png" alt=""></p>
<p>이후에 <code>command</code>+<code>shift</code>+<code>p</code>를 눌러 명령 팔레트를 열어준다. 여기서 new project를 누르면 Template을 고르라고 한다. 기본적으로 Appliction을 만들어주면 된다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/d3b6a21c-d14a-40cf-a33e-7a05bda2cb59/image.png" alt=""></p>
<h4 id="4-생성된-application-살펴보기">4. 생성된 Application 살펴보기</h4>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/a311d68a-c33b-411e-93d0-4dae1560f4e6/image.png" alt="">
보면 크로스플랫폼을 넘어 멀티플랫폼을 표방하고 있는 플러터답게 Android, ios, linux, macos, web, window 등 다양한 플랫폼을 위한 디렉토리가 보이는 것을 확인할 수 있다. 여기서 lib에 있는 <code>main.dart</code> 부분이 실제 내가 만드는 애플리케이션에 해당한다.</p>
<h4 id="5-hello-world-찍어보기">5. Hello world 찍어보기</h4>
<p>뭐든 개발을 시작하면 뭐다? Hellow World를 찍어봐야 한다. 설치하면 장치는 두 가지가 잡힌다. chrom과 macos가 있다. 확인하는 방법은 그냥 cmd + shift + p를 눌러서 flutter device를 클릭해준다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/720837b1-a370-4086-a2bb-611a34e1cc3e/image.png" alt=""></p>
<p>그러면 이렇게 잡힌다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/7c2444c3-293b-4fe5-9c28-1e473af95b04/image.png" alt=""></p>
<p>이후에 terminal에서 <code>flutter run</code>이나 run and debug에서 눌러주면 된다. 먼저 macos로 디버그 모드를 실행한 모습이다. 그러면 mac os용 앱이 보여진다. <img src="https://velog.velcdn.com/images/songwoo-yu/post/f080f822-3c16-43ff-ad89-8245e0309235/image.png" alt=""></p>
<p>다음으로 chrom을 선택하고 실행하면 웹이 생성된다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/50469bd5-91c6-4650-a887-90b365a7c7dc/image.png" alt=""></p>
]]></description>
        </item>
        <item>
            <title><![CDATA[Flutter Observability Toolchain(Sentry, ClickUp, Grafana)]]></title>
            <link>https://velog.io/@songwoo-yu/Flutter-Observability-ToolchainSentry-ClickUp-Grafana</link>
            <guid>https://velog.io/@songwoo-yu/Flutter-Observability-ToolchainSentry-ClickUp-Grafana</guid>
            <pubDate>Wed, 17 Dec 2025 08:46:38 GMT</pubDate>
            <description><![CDATA[<h3 id="flutter의-프론트엔드와-백엔드를-관측하는-toolchainsentryio-clickup-grafana">Flutter의 프론트엔드와 백엔드를 관측하는 Toolchain(Sentry.io, ClickUp, Grafana)</h3>
<p>오늘부터 flutter 앱을 테스트하고 유지보수하기 위해, 오류를 감지하고 이슈를 관리하는 툴의 사용법을 익혀, 실제 실무에서 사용하는 기본적인 방식을 정리해보려고 한다.</p>
<h4 id="1-sentry-io--실시간-flutterfront-end-감시-서비스">1. Sentry io : 실시간 Flutter(front-end) 감시 서비스</h4>
<p>해당 서비스가 어떤 기능들을 갖추고 있는지는 파악하지 못했다. 다만 배포한 Flutter 앱을 해당 디바이스의 상태(CPU, LAM, Network 사용량 등)와 에러, 성능 저하 등을 실시간으로 모니터링하여 이슈를 파악할 수 있는 서비스라고 정리할 수는 있다. 기존에 디바이스와 컴퓨터를 케이블로 연결하여 로그를 분석하던 방식을 떨어져서 웹 UI를 통해 확인할 수 있는 개발자 도구라고도 볼 수 있겠다.</p>
<p>정리하자면 클라이언트(배포된 Flutter)에서 발생하는 Crash, Error, 성능 저하를 실시간으로 수집하고 분석하는 플랫폼이다. 분석이라고 하면 에러가 발생하기 직전의 사용자 행동 경로를 추적할 수도 있고, 당시 메모리 부족으로 발생한 것인지 아니면 다른 이유로 발생한 것인지 하드웨어의 상태도 확인할 수 있어, 원인 파악에 용이하다.
<img src="https://velog.velcdn.com/images/songwoo-yu/post/479b4970-6b27-4590-a93a-5d038e7f2d02/image.png" alt=""></p>
<ol start="2">
<li>ClickUp : Project Manage 및 생산성 관리</li>
</ol>
<p>우리의 프로젝트에서는 앞서 Sentry에서 발생한 문제를 연동하여 이슈로 생성하고 관리하는 이슈관리 플랫폼이라고 정리할 수 있다. 우측 하단의 Issue Tasking 버튼을 통해서 ClickUp에 이슈를 할당할 수 있다. 
<img src="https://velog.velcdn.com/images/songwoo-yu/post/ef9fef3e-85de-4808-b9a6-0f35fba914d2/image.png" alt=""></p>
<p><img src="https://velog.velcdn.com/images/songwoo-yu/post/76c7420f-80f6-4c39-8d45-45e1d0c94a4b/image.png" alt="">
그러면 아래와 같이 ClickUp으로 이동하여 다음과 같이 task를 할당하고 관리할 수 있다.</p>
<p>본래 기능은 더 다양하다. 우리가 사용하는 이슈 트레킹, 문서 관리, 일정 관리를 모두 사용할 수 있는 올인원 협업 플랫폼이라고 볼 수 있다. 이전에 사용해본 Gitlab의 이슈 보드는 개발자 친화적이지만, 기획자나 테스터 PM 등이 사용하기에는 기능이 제한적이라는 단점이 존재했다. ClickUp은 개발 이슈를 넘어 기획 문서와 회의록, 로드맵을 모두 관리할 수 있는 워크플로우를 통합하는 서비스이다. 우리가 자주 사용하는 간반 보드와 리스트, 간트 차트 등을 생성하여 프로젝트의 현황을 확인할 수 있다.</p>
<h4 id="3-grafana--인프라backend-모니터링">3. Grafana : 인프라(backend) 모니터링</h4>
<p>마지막으로 Grafana의 경우 infrastructure(linux, nginx, postgreSQL 등) 등의 데이터 소스를 연결하여 대시보드의 형태로 시각화해주는 오픈소스 플랫폼이다. 주로 백엔드 서버와 인프라의 상태를 확인하기 위해 사용한다. API 서버가 제대로 동작하는지, 응답 속도에 문제가 생겼거나 CPU 사용량이 폭주하는가 등을 감시한다. 앞서 플러터의 문제를 파악해주는 것과 동일 선상에 있는데, 이는 백엔드에 초점이 맞춰져 서버측의 문제를 확인할 수 있게 해주는 것이다.</p>
<h3 id="정리--테스트-및-유지보수를-위한-도구들">정리 : 테스트 및 유지보수를 위한 도구들</h3>
<p>실시간성, 안정성, 보안성이 중요한 프로젝트에서 위 도구들은 아주 중요하다. 특히 영상 스트리밍 디코딩 과정에서 발생하는 네이티브 문제(기기별, 네트워크, 성능)을 모니터링하기 위해 Sentry.io에서 확인한다. API 서버와 데이터베이스 등의 응답 속도, 과부하, 에러율 등을 감지하고 확인시켜주는 Grafana를 사용한다. 마지막으로 이슈들을 정리하고 일정을 만들고 소스코드를 관리하는 워크플로우를 통합해줘야 한다. ClickUp, GitLab은 이들을 관리하고 확인하는 용도로 사용한다.</p>
]]></description>
        </item>
    </channel>
</rss>