<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>차무식</title>
    <link>https://chamusik.tistory.com/</link>
    <description></description>
    <language>ko</language>
    <pubDate>Tue, 14 Jul 2026 09:39:17 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>chamusik</managingEditor>
    <image>
      <title>차무식</title>
      <url>https://tistory1.daumcdn.net/tistory/6806932/attach/a1d0295c9f23471f8f7e39135f933348</url>
      <link>https://chamusik.tistory.com</link>
    </image>
    <item>
      <title>AWS Well Architecture Framework</title>
      <link>https://chamusik.tistory.com/89</link>
      <description>&lt;h2 style=&quot;box-sizing: border-box; border-width: 1px 10px; border-bottom-style: solid; border-bottom-color: 006DD7; border-left-style: solid; border-left-color: 006DD7; letter-spacing: -1px; padding: 5px; margin: 5px 0px; line-height: 1.3;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: 006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;좋은 아키텍처란? AWS에서 가이드하는 5원칙&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: 006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;운영 우수성, 보안, 안정성, 성능 효율성, 비용 최적화를 고려해야한다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #ee2323; text-align: start;&quot;&gt; &amp;rarr; 아래 내용들은 제가 스스로 이해하기 쉽게 적은 부분도 있으므로 그 부분 고려하시면서 읽어주세요!&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1.&amp;nbsp; 운영&amp;nbsp; 우수성&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 운영 작업을 코드로 수행 (IaC) &amp;rarr; 재현성, 이력 관리 ( &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;e.g. &lt;/span&gt;Terraform, Ansible, CloudFormation)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 변경 작업을 최소 단위로 나누어 수행 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;&amp;rarr;&lt;span&gt;&amp;nbsp; 각 시스템들의 종속성을 줄이는 것이 변경 또는 작업을 하는 데 유리, &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;롤백도 고려&lt;/span&gt; &lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;- 장애 시나리오, 운영 프로세스 자주 개선, 모든 장애 리뷰 및 Lesson Learn 하기&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. 보안&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 시스템의 모든 접근에 대한 추적 및 기록 (Cloudtrail, Guard Duty)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 네트워크 계층(OSI 7Layer) 에 대해 보안 적용&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 자동화가 보안에 도움&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 모든 데이터를 보호하도록 설계 (전송 중인 데이터, 정적 데이터)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 보안 이벤트 준비 (침입탐지, Ddos 등)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;2.1 네트워크 계층별 보안&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;7계층 Application Layer Security &lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- AWS WAF&amp;amp;Sheild: 웹 방화벽 및 Ddos 공격 방어&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- AWS Inspector: Agent 기반/ Application 보안 진단&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;4계층 Transport Layer Security&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;- 보안 그룹: AWS 리소스의 네트워크 접근 통제 (포트 번호(TCP/UDP)까지 제어)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;3계층 Network Layer Security (IP 주소 기반 접근 제어)&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 보안 그룹: AWS 리소스의 네트워크 접근 통제&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- VPC NACL: AWS 서브넷간 네트워크 접근 통제&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- VPC Flow logs: VPC내 트래픽 분석 및 가시화&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- Bastion Host: 내부 네트워크 접근을 위한 프록시&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- HTTPS/SSL/TLS: 네트워크 접근을 위한 프록시&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1계층 Physical Layer Security&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 규정 준수 프로그램: ISO27001, ISMS, PCI DSS, FedRAMP 등&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 보호 설비: 화재 감지 및 진압, 전원 이중화, 항온항습 등&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;- 물리적 출입 통제: 영상 감시, 침입 탐지, 보안 카드, 2중 인증 등&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;2.2 관리적 보안&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;시스템 보안&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- Service Catalog: 표준화된 AWS 리소스 생성/접근제어&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- AWS Config: AWS 리소스 변경내역 기록/관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- AWS IAM (MFA/Role): AWS 계정 접근제어/권한관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- Cloud Watch Logs: AWS 리소스 및 Application 모니터링&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- Trusted Advisor: 비용/가용성/성능/보안 측면의 감사&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;데이터 보안&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- AWS KMS: 암호화 키 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- AWS CloudHSM: 위/변조 감시 가능한 암호화키 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- AWS CloudTrail: 모든 AWS API요청에 대한 로그 기록&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. 안정성&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 장애에 대한 자동 복구 구축, &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #333333; text-align: start;&quot;&gt;장애 복구 훈련 수행&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 가용성을 높이기 위한 수평 확장 설계 (리소스 고정 X)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 운영 자동화 구축과 지속적 변경 관리&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4. 성능 효율성&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 최신 기술을 습득하고 적용 (e.g. 6세대 EC2인스턴스 m6g &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;&amp;rarr; ARM 기반, 가격 저렴하고 성능 우수)&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;- 주기적 프로토타입 진행&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;- 빠른 글로벌 접근 가능한 설계 ( &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;e.g. CloudFront, Route 53)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;- 서버리스 아키텍처 활용 ( &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;e.g. Lambda, Fargate, S3)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;5. 비용 최적화&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 알맞는 가격 약정 채택 &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;&amp;rarr;&lt;/span&gt; &lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR'; color: #000000; text-align: start;&quot;&gt;리소스 Right Sizing&lt;/span&gt; &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 클라우드 마이그레이션을 통해 온프레미스 운영비용 최소화&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 관리형 서비스를 사용하여 운영비용 최소화&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;- 지속적인 월 비용 분석을 통한 비용 최적화 수행&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AWS/AWS 아키텍처 설계</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/89</guid>
      <comments>https://chamusik.tistory.com/89#entry89comment</comments>
      <pubDate>Wed, 4 Mar 2026 22:17:23 +0900</pubDate>
    </item>
    <item>
      <title>CKA 합격 후기</title>
      <link>https://chamusik.tistory.com/88</link>
      <description>&lt;h2 style=&quot;box-sizing: border-box; border-width: 1px 10px; border-bottom-style: solid; border-bottom-color: 006DD7; border-left-style: solid; border-left-color: 006DD7; letter-spacing: -1px; padding: 5px; margin: 5px 0px; line-height: 1.3;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: 006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;목표 : Kubestronaut&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컨테이너 기술이 MSA 아키텍처를 넘어 데이터 엔지니어링, AI 플랫폼까지 광범위하게 쓰이고 있고, 개인적인 흥미도 있어서 CNCF 쿠버네티스 자격증 5개를 모두 취득하는 Kubestronaut를 목표로 잡았다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2025년 3월에 KCNA를 취득하고, 미루고 미루다 2026년 2월에 드디어 CKA를 취득했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;시험&amp;nbsp; 환경&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;온라인 핸즈온 시험이다. AWS나 GCP 시험에 비해 감독관의 요구가 까다롭고 엄격했다. 책장을 담요로 가리라는 요청도 받았고, 전반적으로 꼼꼼하게 확인하는 편이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시험 가격은 414,000원으로 프로그래머스에서 구매했다. 비싼 시험이라 FAIL 나면 마음이 쓰릴 수밖에 없다. 덕분에 더 공부하게 되긴 한다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;결과&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫 번째 시험: &lt;b&gt;59점 (FAIL)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;두 번째 시험: &lt;b&gt;91점 (PASS)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;준비&amp;nbsp; 과정&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;배경&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노베이스는 아니었다. 현업에서 쿠버네티스를 쓰고 있지는 않지만, 취업 준비 과정에서 꽤 다뤄봤다. 졸업작품으로 쿠버네티스 환경에서 머신러닝 프로젝트를 진행했고, 신세계아이앤씨 클라우드 엔지니어 양성과정 최종 프로젝트에서 신생항공사 예매 플랫폼을 EKS로 구성 해봤다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노베이스이거나 쿠버네티스를 활용한 프로젝트 경험이 없다면, 보수적으로 잡으면 100시간은 투자하는 것을 추천한다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;시험 준비를 위한 공부 시간&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;첫 번째 시험: 퇴근 후 3시간씩 5일 (?)&lt;/li&gt;
&lt;li&gt;두 번째 시험: 퇴근 후 3시간씩 10일 (?)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;강의 및 환경&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Udemy&lt;/b&gt; - &lt;a href=&quot;https://www.udemy.com/course/certified-kubernetes-administrator-with-practice-tests/learn/lecture/14224074#overview&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;Mumshad의 CKA 강의&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;인프런&lt;/b&gt; - &lt;a href=&quot;https://www.inflearn.com/course/certified-kubernetes/dashboard?cid=339687&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;일프로님의 CKA 강의&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;실습 환경&lt;/b&gt;: KodeKloud&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;느낀&amp;nbsp; 점&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나름 시험을 쉽게 생각하고 응시했는데, 시간이 많이 모자랐다. 첫 번째 시험에서 느렸던 부분과 몰랐던 내용을 정리해서 두 번째 시험을 준비했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;덤프를 외우면 시간을 줄일 수 있겠지만, 대부분 옛날 것들 위주라 크게 도움이 되지 않았다. 오히려 첫 번째 시험에서 출제 경향을 확인하고 두 번째 시험을 준비하는 것이 효율적이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회사 일이 많았기 때문에 준비가 쉽지 않았다. 야근하고 집에 와서 공부하는 날들이었지만, 흥미가 있고 재밌었기 때문에 나름 만족스러운 과정이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다음 목표는 Kubestronaut 달성을 위한 나머지 자격증(CKAD, CKS, KCSA)이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;KCNA에 이어 CKA&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2/5 완성..&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;CKA-hanseunggyu.png&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;798&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dEqgeM/dJMcafr5p0s/cPdABmeMAhxBXIcNBrBMQk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dEqgeM/dJMcafr5p0s/cPdABmeMAhxBXIcNBrBMQk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dEqgeM/dJMcafr5p0s/cPdABmeMAhxBXIcNBrBMQk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdEqgeM%2FdJMcafr5p0s%2FcPdABmeMAhxBXIcNBrBMQk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1031&quot; height=&quot;798&quot; data-filename=&quot;CKA-hanseunggyu.png&quot; data-origin-width=&quot;1031&quot; data-origin-height=&quot;798&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>Kubernetes/CKA</category>
      <category>CKA #쿠버네티스 #2026</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/88</guid>
      <comments>https://chamusik.tistory.com/88#entry88comment</comments>
      <pubDate>Sun, 22 Feb 2026 23:07:30 +0900</pubDate>
    </item>
    <item>
      <title>[CKA] RBAC</title>
      <link>https://chamusik.tistory.com/86</link>
      <description>&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;문제 3&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ServiceAccount,&amp;nbsp;Role,&amp;nbsp;RoleBinding &lt;br /&gt;◾&amp;nbsp;작업&amp;nbsp;클러스터&amp;nbsp;:&amp;nbsp;k8s &lt;br /&gt;&amp;bull;&amp;nbsp;애플리케이션&amp;nbsp;운영중&amp;nbsp;특정&amp;nbsp;namespace의&amp;nbsp;Pod들을&amp;nbsp;모니터할수&amp;nbsp;있는&amp;nbsp;서비스가&amp;nbsp;요청되었습니다.&amp;nbsp;api-access &lt;br /&gt;네임스페이스의&amp;nbsp;모든&amp;nbsp;pod를&amp;nbsp;view할&amp;nbsp;수&amp;nbsp;있도록&amp;nbsp;다음의&amp;nbsp;작업을&amp;nbsp;진행하시오. &lt;br /&gt;&amp;bull;&amp;nbsp;api-access라는&amp;nbsp;새로운&amp;nbsp;namespace에&amp;nbsp;pod-viewer라는&amp;nbsp;이름의&amp;nbsp;Service&amp;nbsp;Account를&amp;nbsp;만듭니다. &lt;br /&gt;&amp;bull;&amp;nbsp;podreader-role이라는&amp;nbsp;이름의&amp;nbsp;Role과&amp;nbsp;podreader-rolebinding이라는&amp;nbsp;이름의&amp;nbsp;RoleBinding을&amp;nbsp;만듭니다. &lt;br /&gt;&amp;bull;&amp;nbsp;앞서&amp;nbsp;생성한&amp;nbsp;ServiceAccount를&amp;nbsp;API&amp;nbsp;resource&amp;nbsp;Pod에&amp;nbsp;대하여&amp;nbsp;watch,&amp;nbsp;list,&amp;nbsp;get을&amp;nbsp;허용하도록&amp;nbsp;매핑하시오. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;1.&amp;nbsp;namespace&amp;nbsp;생성&amp;nbsp;:&amp;nbsp;api-access &lt;br /&gt;kubectl&amp;nbsp;create&amp;nbsp;namespace&amp;nbsp;api-access &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;2.&amp;nbsp;ServiceAccount&amp;nbsp;:&amp;nbsp;pod-viewer&amp;nbsp;--namespace&amp;nbsp;api-access &lt;br /&gt;kubectl&amp;nbsp;create&amp;nbsp;serviceaccount&amp;nbsp;pod-viewer&amp;nbsp;--namespace&amp;nbsp;api-access &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;3.&amp;nbsp;role&amp;nbsp;생성&amp;nbsp;:&amp;nbsp;podreader-role&amp;nbsp;:&amp;nbsp;Pod&amp;nbsp;watch,&amp;nbsp;list,&amp;nbsp;get&amp;nbsp;--namespace&amp;nbsp;api-access &lt;br /&gt;kubectl&amp;nbsp;create&amp;nbsp;role&amp;nbsp;podreader-role&amp;nbsp;--verb=get&amp;nbsp;--verb=list&amp;nbsp;--verb=watch&amp;nbsp;--resource=pods&amp;nbsp;--namespace=api-access &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;4.&amp;nbsp;rolebinding&amp;nbsp;생성&amp;nbsp;:&amp;nbsp;podreader-rolebinding,&amp;nbsp;role=podreader-role,&amp;nbsp;serviceaccount=pod-viewer &lt;br /&gt;kubectl&amp;nbsp;create&amp;nbsp;rolebinding&amp;nbsp;podreader-rolebinding&amp;nbsp;--role=podreader-role&amp;nbsp;--serviceaccount=api-access:pod-viewer&amp;nbsp;--namespace=api-access &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;문제 4&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;ServiceAccount,&amp;nbsp;ClusterRole, &lt;br /&gt;ClusterRoleBinding &lt;br /&gt;◾&amp;nbsp;작업&amp;nbsp;클러스터&amp;nbsp;:&amp;nbsp;k8s &lt;br /&gt;&amp;bull;&amp;nbsp;작업&amp;nbsp;Context에서&amp;nbsp;애플리케이션&amp;nbsp;배포를&amp;nbsp;위해&amp;nbsp;새로운&amp;nbsp;ClusterRole을&amp;nbsp;생성하고&amp;nbsp;특정&amp;nbsp;namespace의 &lt;br /&gt;ServiceAccount를&amp;nbsp;바인드하시오. &lt;br /&gt;&amp;bull;&amp;nbsp;다음의&amp;nbsp;resource&amp;nbsp;type에서만&amp;nbsp;Create가&amp;nbsp;허용된&amp;nbsp;ClusterRole&amp;nbsp;deployment-clusterrole을&amp;nbsp;생성합니다. &lt;br /&gt;Resource&amp;nbsp;Type:&amp;nbsp;Deployment&amp;nbsp;StatefulSet&amp;nbsp;DaemonSet &lt;br /&gt;&amp;bull;&amp;nbsp;미리&amp;nbsp;생성된&amp;nbsp;namespace&amp;nbsp;api-access&amp;nbsp;에&amp;nbsp;cicd-token이라는&amp;nbsp;새로운&amp;nbsp;ServiceAccount를&amp;nbsp;만듭니다. &lt;br /&gt;&amp;bull;&amp;nbsp;ClusterRole&amp;nbsp;deployment-clusterrole을&amp;nbsp;namespace&amp;nbsp;api-access&amp;nbsp;로&amp;nbsp;제한된&amp;nbsp;새&amp;nbsp;ServiceAccount&amp;nbsp;cicd-token에&amp;nbsp;바인딩하는 &lt;br /&gt;합니다. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;namespace&amp;nbsp;api-access &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;1.&amp;nbsp;ServiceAccount&amp;nbsp;생성&amp;nbsp;:&amp;nbsp;cicd-token &lt;br /&gt;kubectl&amp;nbsp;create&amp;nbsp;serviceaccount&amp;nbsp;cicd-token&amp;nbsp;--namespace&amp;nbsp;api-access &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;2.&amp;nbsp;ClusterRole&amp;nbsp;생성&amp;nbsp;:&amp;nbsp;deployment-clusterrole&amp;nbsp;[Deployment&amp;nbsp;StatefulSet&amp;nbsp;DaemonSet&amp;nbsp;(Create)] &lt;br /&gt;kubectl&amp;nbsp;create&amp;nbsp;clusterrole&amp;nbsp;deployment-clusterrole&amp;nbsp;--verb=create&amp;nbsp;--resource=deployment,statefulset,daemonset &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;3.&amp;nbsp;ClusterRole&amp;nbsp;binding&amp;nbsp;생성&amp;nbsp;:&amp;nbsp;deployment-clusterrolebinding&amp;nbsp;[ClusterRole&amp;nbsp;:&amp;nbsp;deployment-clusterrole],&amp;nbsp;[ServiceAccount&amp;nbsp;:&amp;nbsp;cicd-token] &lt;br /&gt;kubectl&amp;nbsp;create&amp;nbsp;clusterrolebinding&amp;nbsp;deployment-clusterrolebinding&amp;nbsp;--clusterrole=deployment-clusterrole&amp;nbsp;--serviceaccount=api-access:cicd-token&amp;nbsp;--namespace=api-access &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;문제 5&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;User,&amp;nbsp;ClusterRole,&amp;nbsp;ClusterRoleBinding &lt;br /&gt;◾&amp;nbsp;작업&amp;nbsp;클러스터&amp;nbsp;:&amp;nbsp;k8s &lt;br /&gt;CSR(Certificate&amp;nbsp;Signing&amp;nbsp;Request)를&amp;nbsp;통해&amp;nbsp;app-manager&amp;nbsp;인증서를&amp;nbsp;발급받은&amp;nbsp;user&amp;nbsp;app-manager&amp;nbsp;에게 &lt;br /&gt;cluster내&amp;nbsp;모든&amp;nbsp;namespace의&amp;nbsp;deployment,&amp;nbsp;pod,&amp;nbsp;service&amp;nbsp;리소스를&amp;nbsp;create,&amp;nbsp;list,&amp;nbsp;get,&amp;nbsp;update,&amp;nbsp;delete&amp;nbsp;할&amp;nbsp;수 &lt;br /&gt;있는&amp;nbsp;권한을&amp;nbsp;할당하시오. &lt;br /&gt;&amp;bull;&amp;nbsp;user&amp;nbsp;name&amp;nbsp;:&amp;nbsp;app-manager &lt;br /&gt;&amp;bull;&amp;nbsp;certificate&amp;nbsp;name:&amp;nbsp;app-manager &lt;br /&gt;&amp;bull;&amp;nbsp;clusterRole&amp;nbsp;name&amp;nbsp;:&amp;nbsp;app-access &lt;br /&gt;&amp;bull;&amp;nbsp;clusterRoleBinding&amp;nbsp;name:&amp;nbsp;app-access-binding &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;#&amp;nbsp;1.&amp;nbsp;user&amp;nbsp;:&amp;nbsp;app-manager &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;2.&amp;nbsp;clusterrole&amp;nbsp;:&amp;nbsp;app-access &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;3.&amp;nbsp;clusterrolebinding&amp;nbsp;:&amp;nbsp;app-access-binding&lt;/p&gt;</description>
      <category>Kubernetes/CKA</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/86</guid>
      <comments>https://chamusik.tistory.com/86#entry86comment</comments>
      <pubDate>Wed, 8 Oct 2025 01:04:21 +0900</pubDate>
    </item>
    <item>
      <title>[CKA] kubeadm upgrade</title>
      <link>https://chamusik.tistory.com/85</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[문제2. cluster upgrade]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt; Control&amp;nbsp;plane&amp;nbsp;upgrade&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;#&amp;nbsp;1.&amp;nbsp;업그레이드&amp;nbsp;할&amp;nbsp;버전&amp;nbsp;확인 &lt;br /&gt;#&amp;nbsp;2.&amp;nbsp;kudeadm&amp;nbsp;업그레이드&amp;nbsp; &lt;br /&gt;apt-mark&amp;nbsp;unhold&amp;nbsp;kubeadm&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;\ &lt;br /&gt;&amp;nbsp;apt-get&amp;nbsp;update&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;-y&amp;nbsp;kubeadm=1.32.9-1.1&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;\ &lt;br /&gt;&amp;nbsp;apt-mark&amp;nbsp;hold&amp;nbsp;kubeadm &lt;br /&gt;&lt;br /&gt;kubeadm&amp;nbsp;version &lt;br /&gt;kubeadm&amp;nbsp;upgrade&amp;nbsp;plan &lt;br /&gt;kubeadm&amp;nbsp;upgrade&amp;nbsp;apply&amp;nbsp;v1.32.9 &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;3.&amp;nbsp;노드&amp;nbsp;드레인 &lt;br /&gt;kubectl&amp;nbsp;drain&amp;nbsp;hk8s&amp;nbsp;--ignore-daemonsets &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;4.&amp;nbsp;kubelet과&amp;nbsp;kubectl&amp;nbsp;업그레이드 &lt;br /&gt;apt-mark&amp;nbsp;unhold&amp;nbsp;kubelet&amp;nbsp;kubectl&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;\ &lt;br /&gt;apt-get&amp;nbsp;update&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;-y&amp;nbsp;kubelet=1.32.9-1.1&amp;nbsp;kubectl=1.32.9-1.1&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;\ &lt;br /&gt;apt-mark&amp;nbsp;hold&amp;nbsp;kubelet&amp;nbsp;kubectl &lt;br /&gt;&lt;br /&gt;sudo&amp;nbsp;systemctl&amp;nbsp;daemon-reload &lt;br /&gt;sudo&amp;nbsp;systemctl&amp;nbsp;restart&amp;nbsp;kubelet &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;5.&amp;nbsp;노드&amp;nbsp;uncordon &lt;br /&gt;kubectl uncordon hk8s-master&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;Worker node upgrade&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;#&amp;nbsp;1.&amp;nbsp;모든&amp;nbsp;노드&amp;nbsp;kubeadm&amp;nbsp;업그레이드 &lt;br /&gt;apt-mark&amp;nbsp;unhold&amp;nbsp;kubeadm&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;\ &lt;br /&gt;apt-get&amp;nbsp;update&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;-y&amp;nbsp;kubeadm=1.32.9-1.1&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;\ &lt;br /&gt;apt-mark&amp;nbsp;hold&amp;nbsp;kubeadm &lt;br /&gt;&lt;br /&gt;sudo&amp;nbsp;kubeadm&amp;nbsp;upgrade&amp;nbsp;node &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;2.&amp;nbsp;console이나&amp;nbsp;hk8s-master에서 &lt;br /&gt;kubectl&amp;nbsp;drain&amp;nbsp;hk8s-worker1&amp;nbsp;--ignore-daemonsets &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;3.&amp;nbsp;kubelet과&amp;nbsp;kubectl&amp;nbsp;업그레이드 &lt;br /&gt;apt-mark&amp;nbsp;unhold&amp;nbsp;kubelet&amp;nbsp;kubectl&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;\ &lt;br /&gt;apt-get&amp;nbsp;update&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;apt-get&amp;nbsp;install&amp;nbsp;-y&amp;nbsp;kubelet=1.32.9-1.1&amp;nbsp;kubectl=1.32.9-1.1&amp;nbsp;&amp;amp;&amp;amp;&amp;nbsp;\ &lt;br /&gt;apt-mark&amp;nbsp;hold&amp;nbsp;kubelet&amp;nbsp;kubectl &lt;br /&gt;&lt;br /&gt;sudo&amp;nbsp;systemctl&amp;nbsp;daemon-reload &lt;br /&gt;sudo&amp;nbsp;systemctl&amp;nbsp;restart&amp;nbsp;kubelet &lt;br /&gt;&lt;br /&gt;#&amp;nbsp;4.&amp;nbsp;노드에&amp;nbsp;적용된&amp;nbsp;cordon&amp;nbsp;해제 &lt;br /&gt;kubectl&amp;nbsp;uncordon&amp;nbsp;hk8s-worker1&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://kubernetes.io/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/&quot; target=&quot;_blank&quot; rel=&quot;noopener&amp;nbsp;noreferrer&quot;&gt;https://kubernetes.io/ko/docs/tasks/administer-cluster/kubeadm/kubeadm-upgrade/&lt;/a&gt;&lt;/p&gt;</description>
      <category>Kubernetes/CKA</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/85</guid>
      <comments>https://chamusik.tistory.com/85#entry85comment</comments>
      <pubDate>Tue, 7 Oct 2025 00:18:29 +0900</pubDate>
    </item>
    <item>
      <title>[CKA] etcd-backup</title>
      <link>https://chamusik.tistory.com/84</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;[문제1.&amp;nbsp;etcd-backup] &lt;br /&gt;◾&amp;nbsp;작업&amp;nbsp;클러스터&amp;nbsp;:&amp;nbsp;k8s &lt;br /&gt;https://127.0.0.1:2379에서&amp;nbsp;실행&amp;nbsp;중인&amp;nbsp;etcd의&amp;nbsp;snapshot을&amp;nbsp;생성하고&amp;nbsp;snapshot을&amp;nbsp;/data/etcd-snapshot.db에 &lt;br /&gt;저장합니다. &lt;br /&gt;그런&amp;nbsp;다음&amp;nbsp;/data/etcd-snapshot-previous.db에&amp;nbsp;있는&amp;nbsp;기존의&amp;nbsp;이전&amp;nbsp;스냅샷을&amp;nbsp;복원합니다. &lt;br /&gt;etcdctl을&amp;nbsp;사용하여&amp;nbsp;서버에&amp;nbsp;연결하기&amp;nbsp;위해&amp;nbsp;다음&amp;nbsp;TLS&amp;nbsp;인증서/키가&amp;nbsp;제공됩니다. &lt;br /&gt;&amp;bull;&amp;nbsp;CA&amp;nbsp;certificate:&amp;nbsp;/etc/kubernetes/pki/etcd/ca.crt &lt;br /&gt;&amp;bull;&amp;nbsp;Client&amp;nbsp;certificate:&amp;nbsp;/etc/kubernetes/pki/etcd/server.crt &lt;br /&gt;&amp;bull;&amp;nbsp;Client&amp;nbsp;key:&amp;nbsp;/etc/kubernetes/pki/etcd/server.key &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;# 1. etcd backup &lt;br /&gt;sudo&amp;nbsp;ETCDCTL_API=3&amp;nbsp;etcdctl&amp;nbsp;--endpoints=https://127.0.0.1:2379&amp;nbsp;\ &lt;br /&gt;&amp;nbsp;&amp;nbsp;--cacert=/etc/kubernetes/pki/etcd/ca.crt --cert=/etc/kubernetes/pki/etcd/server.crt --key=/etc/kubernetes/pki/etcd/server.key \ &lt;br /&gt;&amp;nbsp;&amp;nbsp;snapshot&amp;nbsp;save&amp;nbsp;/data/etcd-snapshot.db &lt;br /&gt;&lt;br /&gt;# 2. etcd restore &lt;br /&gt;sudo&amp;nbsp;etcdutl&amp;nbsp;--data-dir&amp;nbsp;/var/lib/etcd-previous&amp;nbsp;snapshot&amp;nbsp;restore&amp;nbsp;/data/etcd-snapshot-previous.db &lt;br /&gt;&lt;br /&gt;# 3. etcd static pod data dir 수정 &lt;br /&gt;sudo vi /etc/kubernetes/manifests/etcd.yaml 에서 대문자 G 누르고 아래에서 3번째 /var/lib/etcd-previous 로 수정&lt;/p&gt;</description>
      <category>Kubernetes/CKA</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/84</guid>
      <comments>https://chamusik.tistory.com/84#entry84comment</comments>
      <pubDate>Mon, 6 Oct 2025 22:10:21 +0900</pubDate>
    </item>
    <item>
      <title>IT인프라 (특강)</title>
      <link>https://chamusik.tistory.com/83</link>
      <description>&lt;h2 style=&quot;box-sizing: border-box; border-width: 1px 10px; border-bottom-style: solid; border-bottom-color: 006DD7; border-left-style: solid; border-left-color: 006DD7; letter-spacing: -1px; padding: 5px; margin: 5px 0px; line-height: 1.3;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: 006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;IT인프라 특강 정리&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;목차&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. 특강 목적&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. 실습 환경&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. 실습 흐름 및 분석 내용&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4. 핵심 개념 요약&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;5. 통신 흐름 요약&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;6. 면접 대비 질문&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1 .&amp;nbsp; 특강&amp;nbsp; 목적&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;229&quot; data-start=&quot;122&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;165&quot; data-start=&quot;122&quot;&gt;공인 IP / 사설 IP, DNS, 게이트웨이 등 기초 네트워크 개념 이해&lt;/li&gt;
&lt;li data-end=&quot;195&quot; data-start=&quot;166&quot;&gt;Wireshark를 활용해 실제 통신 흐름 시각화&lt;/li&gt;
&lt;li data-end=&quot;229&quot; data-start=&quot;196&quot;&gt;도메인 접속부터 데이터 전송까지 네트워크 동작 구조 학습&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2 .&amp;nbsp; 실습&amp;nbsp; 환경&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;451&quot; data-start=&quot;248&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;280&quot; data-start=&quot;248&quot;&gt;IP 주소: 192.168.40.17 (사설 IP)&lt;/li&gt;
&lt;li data-end=&quot;304&quot; data-start=&quot;281&quot;&gt;게이트웨이: 192.168.40.1&lt;/li&gt;
&lt;li data-end=&quot;366&quot; data-start=&quot;305&quot;&gt;DNS 서버
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;366&quot; data-start=&quot;316&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;340&quot; data-start=&quot;316&quot;&gt;KT DNS: 168.126.63.1&lt;/li&gt;
&lt;li data-end=&quot;366&quot; data-start=&quot;343&quot;&gt;Google DNS: 8.8.8.8&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;394&quot; data-start=&quot;367&quot;&gt;접속 대상: www.alba.co.kr&lt;/li&gt;
&lt;li data-end=&quot;451&quot; data-start=&quot;395&quot;&gt;도메인 &amp;rarr; IP 변환 결과: 116.125.126.211, 116.125.126.225 등&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3 .&amp;nbsp; 실습&amp;nbsp; 흐름&amp;nbsp; 및&amp;nbsp; 분석&amp;nbsp; 내용&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-end=&quot;499&quot; data-start=&quot;479&quot; data-ke-size=&quot;size23&quot;&gt;1) IP 및 WHOIS 확인&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;639&quot; data-start=&quot;500&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;545&quot; data-start=&quot;500&quot;&gt;ipconfig.io 접속 결과: 61.74.110.99 (공인 IP)&lt;/li&gt;
&lt;li data-end=&quot;639&quot; data-start=&quot;546&quot;&gt;WHOIS 조회 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;639&quot; data-start=&quot;562&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;586&quot; data-start=&quot;562&quot;&gt;할당 기관: KISA (한국인터넷진흥원)&lt;/li&gt;
&lt;li data-end=&quot;615&quot; data-start=&quot;589&quot;&gt;회선 사업자: KORNET (SK브로드밴드)&lt;/li&gt;
&lt;li data-end=&quot;639&quot; data-start=&quot;618&quot;&gt;주소: 경기도 성남시 분당구 불정로&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;660&quot; data-start=&quot;641&quot; data-ke-size=&quot;size23&quot;&gt;2) DNS 질의 응답 확인&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZfNPF/btsQ33dqRxZ/kq4fv02LW2wPk7geghFw2k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZfNPF/btsQ33dqRxZ/kq4fv02LW2wPk7geghFw2k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZfNPF/btsQ33dqRxZ/kq4fv02LW2wPk7geghFw2k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZfNPF%2FbtsQ33dqRxZ%2Fkq4fv02LW2wPk7geghFw2k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1908&quot; height=&quot;188&quot; data-origin-width=&quot;1908&quot; data-origin-height=&quot;188&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;803&quot; data-start=&quot;661&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;700&quot; data-start=&quot;661&quot;&gt;Wireshark로 www.alba.co.kr 도메인 질의 캡처&lt;/li&gt;
&lt;li data-end=&quot;743&quot; data-start=&quot;701&quot;&gt;168.126.63.1 &amp;rarr; 116.125.126.211 IP 응답&lt;/li&gt;
&lt;li data-end=&quot;781&quot; data-start=&quot;744&quot;&gt;DNS 프로토콜: Standard query / response&lt;/li&gt;
&lt;li data-end=&quot;803&quot; data-start=&quot;782&quot;&gt;A 레코드, SOA 정보 확인 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;834&quot; data-start=&quot;805&quot; data-ke-size=&quot;size23&quot;&gt;3) TCP 3-way Handshake 분석&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1215&quot; data-origin-height=&quot;492&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/domUFu/btsQ3ySfLPe/X86KLcB1K8F4UEpxjp68X1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/domUFu/btsQ3ySfLPe/X86KLcB1K8F4UEpxjp68X1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/domUFu/btsQ3ySfLPe/X86KLcB1K8F4UEpxjp68X1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdomUFu%2FbtsQ3ySfLPe%2FX86KLcB1K8F4UEpxjp68X1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1215&quot; height=&quot;492&quot; data-origin-width=&quot;1215&quot; data-origin-height=&quot;492&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;982&quot; data-start=&quot;835&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;982&quot; data-start=&quot;835&quot;&gt;패킷 흐름 확인
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;982&quot; data-start=&quot;848&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;869&quot; data-start=&quot;848&quot;&gt;SYN &amp;rarr; SYN-ACK &amp;rarr; ACK&lt;/li&gt;
&lt;li data-end=&quot;952&quot; data-start=&quot;872&quot;&gt;이후 TLSv1.2 Handshake (Client Hello, Server Hello, Certificate, Key Exchange 등)&lt;/li&gt;
&lt;li data-end=&quot;982&quot; data-start=&quot;955&quot;&gt;암호화된 Application Data 송수신&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-end=&quot;1002&quot; data-start=&quot;984&quot; data-ke-size=&quot;size23&quot;&gt;4) IP 수동 설정 실습&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;703&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dVvgHo/btsQ4m4Rbb2/PBgTQb8GsKj4guUGUFmIOk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dVvgHo/btsQ4m4Rbb2/PBgTQb8GsKj4guUGUFmIOk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dVvgHo/btsQ4m4Rbb2/PBgTQb8GsKj4guUGUFmIOk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdVvgHo%2FbtsQ4m4Rbb2%2FPBgTQb8GsKj4guUGUFmIOk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1148&quot; height=&quot;703&quot; data-origin-width=&quot;1148&quot; data-origin-height=&quot;703&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1211&quot; data-start=&quot;1003&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1147&quot; data-start=&quot;1003&quot;&gt;네트워크 어댑터 IPv4 수동 설정
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1147&quot; data-start=&quot;1027&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1051&quot; data-start=&quot;1027&quot;&gt;IP 주소: 192.168.40.17&lt;/li&gt;
&lt;li data-end=&quot;1080&quot; data-start=&quot;1054&quot;&gt;서브넷 마스크: 255.255.255.0&lt;/li&gt;
&lt;li data-end=&quot;1109&quot; data-start=&quot;1083&quot;&gt;기본 게이트웨이: 192.168.40.1&lt;/li&gt;
&lt;li data-end=&quot;1147&quot; data-start=&quot;1112&quot;&gt;DNS 서버: 8.8.8.8, 168.126.63.1&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li data-end=&quot;1211&quot; data-start=&quot;1148&quot;&gt;설정하지 않으면 발생하는 문제
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1211&quot; data-start=&quot;1169&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1188&quot; data-start=&quot;1169&quot;&gt;DNS 누락: 도메인 해석 실패&lt;/li&gt;
&lt;li data-end=&quot;1211&quot; data-start=&quot;1191&quot;&gt;게이트웨이 누락: 외부 통신 불가&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4 .&amp;nbsp; 핵심&amp;nbsp; 개념&amp;nbsp; 요약&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;1455&quot; data-start=&quot;1234&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;항목&lt;/td&gt;
&lt;td&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1293&quot; data-start=&quot;1262&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1270&quot; data-start=&quot;1262&quot;&gt;공인 IP&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1293&quot; data-start=&quot;1270&quot;&gt;전 세계적으로 고유, 인터넷 통신용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1331&quot; data-start=&quot;1294&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1302&quot; data-start=&quot;1294&quot;&gt;사설 IP&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1331&quot; data-start=&quot;1302&quot;&gt;내부 네트워크 전용, NAT를 통해 외부 통신&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1368&quot; data-start=&quot;1332&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1340&quot; data-start=&quot;1332&quot;&gt;게이트웨이&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1368&quot; data-start=&quot;1340&quot;&gt;내부 &amp;rarr; 외부 네트워크 통로 역할 (라우터)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1390&quot; data-start=&quot;1369&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1375&quot; data-start=&quot;1369&quot;&gt;DNS&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1390&quot; data-start=&quot;1375&quot;&gt;도메인을 IP로 변환&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1423&quot; data-start=&quot;1391&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1397&quot; data-start=&quot;1391&quot;&gt;ISP&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1423&quot; data-start=&quot;1397&quot;&gt;인터넷 제공 사업자 (KT, SKT 등)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1455&quot; data-start=&quot;1424&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1430&quot; data-start=&quot;1424&quot;&gt;IDC&lt;/td&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1455&quot; data-start=&quot;1430&quot;&gt;IDC는 서버들이 잘 작동할 수 있게 최적의 습도나 온도를 맞춘 시설 환경 (공조시설과 전기가 가장 중요)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;5 .&amp;nbsp; 통신&amp;nbsp; 흐름&amp;nbsp; 요약&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-end=&quot;1616&quot; data-start=&quot;1478&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li data-end=&quot;1508&quot; data-start=&quot;1478&quot;&gt;사용자가 www.alba.co.kr 접속 요청&lt;/li&gt;
&lt;li data-end=&quot;1552&quot; data-start=&quot;1509&quot;&gt;DNS 서버에서 IP 주소 확인 (예: 116.125.126.211)&lt;/li&gt;
&lt;li data-end=&quot;1574&quot; data-start=&quot;1553&quot;&gt;TCP 3-way 핸드셰이크 진행&lt;/li&gt;
&lt;li data-end=&quot;1601&quot; data-start=&quot;1575&quot;&gt;TLS 핸드셰이크 후 HTTPS 통신 시작&lt;/li&gt;
&lt;li data-end=&quot;1616&quot; data-start=&quot;1602&quot;&gt;웹 페이지 응답 수신&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;6 .&amp;nbsp; 면접&amp;nbsp; 대비&amp;nbsp; 질문&amp;nbsp; 정리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-end=&quot;2016&quot; data-start=&quot;1642&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;질문&lt;/td&gt;
&lt;td&gt;간단한 답변&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1758&quot; data-start=&quot;1681&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1702&quot; data-start=&quot;1681&quot;&gt;공인 IP와 사설 IP의 차이는?&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1758&quot; data-start=&quot;1702&quot;&gt;공인 IP는 외부 통신용, 사설 IP는 내부 통신용이며 NAT를 거쳐야 외부로 나갈 수 있다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1819&quot; data-start=&quot;1759&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1772&quot; data-start=&quot;1759&quot;&gt;게이트웨이 역할은?&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1819&quot; data-start=&quot;1772&quot;&gt;내부 네트워크에서 외부로 나갈 수 있게 해주는 통로, 보통 라우터가 담당한다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1882&quot; data-start=&quot;1820&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1844&quot; data-start=&quot;1820&quot;&gt;DNS가 없다면 어떤 문제가 생기나요?&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1882&quot; data-start=&quot;1844&quot;&gt;도메인 이름을 IP로 바꾸지 못해 웹사이트에 접속할 수 없다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;1930&quot; data-start=&quot;1883&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1905&quot; data-start=&quot;1883&quot;&gt;8.8.8.8은 어떤 DNS인가요?&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;1930&quot; data-start=&quot;1905&quot;&gt;구글이 제공하는 공개 DNS 서버이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr data-end=&quot;2016&quot; data-start=&quot;1931&quot;&gt;
&lt;td data-col-size=&quot;sm&quot; data-end=&quot;1956&quot; data-start=&quot;1931&quot;&gt;Wireshark로 확인한 주요 정보는?&lt;/td&gt;
&lt;td data-col-size=&quot;md&quot; data-end=&quot;2016&quot; data-start=&quot;1956&quot;&gt;DNS 질의/응답, TCP 3-way handshake, TLS 핸드셰이크 및 암호화 통신 흐름이다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;</description>
      <category>특강</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/83</guid>
      <comments>https://chamusik.tistory.com/83#entry83comment</comments>
      <pubDate>Sat, 4 Oct 2025 19:04:18 +0900</pubDate>
    </item>
    <item>
      <title>SQL 문제 (1)</title>
      <link>https://chamusik.tistory.com/82</link>
      <description>&lt;h2 style=&quot;box-sizing: border-box; border-width: 1px 10px; border-bottom-style: solid; border-bottom-color: 006DD7; border-left-style: solid; border-left-color: 006DD7; letter-spacing: -1px; padding: 5px; margin: 5px 0px; line-height: 1.3;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: 006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;SQL 문제&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1. 덧셈연산자를 이용하여 모든 사원에 대해서 $300의 급여 인상을 계산한 후 사원의 이름, 급여, 인상된 급여를 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, sal, sal+300 as upSal
from emp;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2.사원의 이름, 급여, 연간 총 수입을 총 수입이 많은 것부터 작은 순으로 출력하시오, 연간 총수입은 월급에 12를 곱한 후 $100의 상여금을 더해서 계산하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename , sal, sal*12+100 as yearSal
from emp
order by yearSal desc;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;3. 급여가 2000을 넘는 사원의 이름과 급여를 표현, 급여가 많은 것부터 작은 순으로 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1749994052493&quot; class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;bash&quot;&gt;&lt;code&gt;select ename, sal 
from emp 
where sal&amp;gt;2000 
order by sal desc;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;4. 사원번호가 7788인 사원의 이름과 부서번호를 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, deptno
from emp
where empno=7788;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;5. 급여가 2000에서 3000 사이에 포함되지 않는 사원의 이름과 급여를 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, sal
from emp
where sal &amp;gt; 3000 or sal &amp;lt; 2000;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;6. 1981년 2월 20일부터 1981년 5월 1일 사이에 입사한 사원의 이름, 담당업무, 입사일을 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, job, hiredate
from emp
where hiredate between '1981-02-20' and '1981-05-01';
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;7.&amp;nbsp;부서번호가 20 및 30에 속한 사원의 이름과 부서번호를 출력, 이름을 기준(내림차순)으로 영문자순으로 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, deptno
from emp
where deptno in (20,30)
order by ename desc;
&lt;/code&gt;&lt;/pre&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, deptno
from emp
where deptno in (20, 30)
order by ename desc;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;8. 사원의 급여가 2000에서 3000사이에 포함되고 부서번호가 20 또는 30인 사원의 이름, 급여와 부서번호를 출력, 이름순(오름차순)으로 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, sal, deptno
from emp
where sal between 2000 and 3000
and deptno in (20,30)
order by ename asc;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;9. 1981년도에 입사한 사원의 이름과 입사일을 출력하시오. (like 연산자와 와일드카드 사용)&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, hiredate
from emp
where hiredate like '1981%';
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;10. 관리자가 없는 사원의 이름과 담당 업무를 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, job
from emp
where mgr is NULL;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;11. 커미션을 받을 수 있는 자격이 되는 사원의 이름, 급여, 커미션을 출력하되 급여 및 커미션을 기준으로 내림차순 정렬하여 표시하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, sal, ifnull(comm,0)
from emp
order by sal, comm desc;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;12. 이름의 세번째 문자가 R인 사원의 이름을 표시하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename
from emp
where ename like '__R%';
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;13. 이름에 A와 E를 모두 포함하고 있는 사원의 이름을 표시하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename
from emp
where ename like '%A%' and ename like '%E%';
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;14. 담당업무가 CLERK, 또는 SALESMAN이면서 급여가 $1600, $950 또는 $1300이 아닌 사원의 이름, 담당업무, 급여를 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;cs&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, job, sal
from emp
where job in ('CLERK', 'SALESMAN')
and sal not in (1600, 950, 1300);
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;15. 커미션이 $500 이상인 사원의 이름과 급여 및 커미션을 출력하시오.&lt;/b&gt;&lt;/p&gt;
&lt;pre class=&quot;cs&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select ename, sal, comm
from emp
where comm &amp;gt; 500
&lt;/code&gt;&lt;/pre&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;Q. Book, Customer, Order 테이블을 이용해서 아래 문제를 풀이하세요&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1 마당 서점의 고객이 요구하는 다음 질문에 대해 SQL문을 작성하시오.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(1) 도서번호가1인도서의이름&lt;/p&gt;
&lt;pre class=&quot;armasm&quot; style=&quot;color: #333333; text-align: start;&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;select bookname
from book
where bookid = 1;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(2) 가격이20,000원이상인도서의이름&lt;/p&gt;
&lt;pre class=&quot;n1ql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select bookname
from book
where price &amp;gt; 20000;
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;2 마당 서점의 운영자와 경영자가 요구하는 다음 질문에 대해 SQL문을 작성하시오.&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(3) 모든 고객의 이름, 주소&lt;/p&gt;
&lt;pre id=&quot;code_1749994052511&quot; class=&quot;routeros&quot; style=&quot;color: #333333; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;select name, address 
from customer;&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(4) 2014년7월4일~7월7일사이에주문받은도서의주문번호&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select orderid
from orders
where orderdate between '2014-07-04' and '2014-07-07';
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(5) 2014년7월4일~7월7일사이에주문받은도서를제외한도서의주문번호&lt;/p&gt;
&lt;pre class=&quot;sql&quot; style=&quot;color: #333333; text-align: start;&quot;&gt;&lt;code&gt;select orderid
from orders
where orderdate not between '2014-07-04' and '2014-07-07';
&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(6) 성이 &amp;lsquo;김&amp;rsquo; 씨인 고객의 이름과 주소&lt;/p&gt;
&lt;pre class=&quot;routeros&quot; style=&quot;color: #333333; text-align: start;&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;select name, address
from customer
where name like '김%';&lt;/code&gt;&lt;/pre&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;(7) 성이 &amp;lsquo;김&amp;rsquo; 씨이고 이름이 &amp;lsquo;아&amp;rsquo; 로 끝나는 고객의 이름과 주소&lt;/p&gt;
&lt;pre id=&quot;code_1749994052514&quot; class=&quot;routeros&quot; style=&quot;color: #333333; text-align: start;&quot; data-ke-type=&quot;codeblock&quot; data-ke-language=&quot;sql&quot;&gt;&lt;code&gt;select name, address 
from customer 
where name like'김%아';&lt;/code&gt;&lt;/pre&gt;</description>
      <category>신세계아이앤씨 클라우드 엔지니어 양성과정 5차수/RDB - MySQL</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/82</guid>
      <comments>https://chamusik.tistory.com/82#entry82comment</comments>
      <pubDate>Sun, 15 Jun 2025 22:30:38 +0900</pubDate>
    </item>
    <item>
      <title>SQL 이론 (1)</title>
      <link>https://chamusik.tistory.com/81</link>
      <description>&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;
&lt;h2 style=&quot;box-sizing: border-box; border-width: 1px 10px; border-bottom-style: solid; border-bottom-color: 006DD7; border-left-style: solid; border-left-color: 006DD7; letter-spacing: -1px; padding: 5px; margin: 5px 0px; line-height: 1.3;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: 006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;SQL 이론 정리 (1)&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;목차&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1. 데이터베이스와 DBMS&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. 릴레이션의 특징&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. 키(Key)의 개념&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4. 무결성 제약 조건&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;5. 기타 참고 사항&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1 .&amp;nbsp; 데이터베이스와&amp;nbsp; DBMS&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;데이터베이스(Database)&lt;/b&gt;: 논리적으로 연관된 데이터를 구조적으로 통합해 놓은 집합.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;DBMS(Database Management System)&lt;/b&gt;: 데이터를 효율적으로 정의, 저장, 검색, 수정, 삭제하는 시스템.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;데이터는 기존에는 파일(file)로 저장했지만, 현재는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;데이터 모델&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;기반으로 관리됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size18&quot;&gt;데이터 모델의 대표 예시&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;관계형 데이터 모델(RDB: Relational DataBase)&lt;/b&gt;&amp;rarr; 각각의 행(Row)은 하나의 레코드(투플), 열(Column)은 속성을 나타냄
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;데이터를&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;2차원 표(테이블)&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;형태로 표현&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2 .&amp;nbsp; 릴레이션의&amp;nbsp; 특징&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;관계형 데이터 모델의 기본 단위인&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;릴레이션&lt;/b&gt;(Relation)은 다음과 같은 특징을 가진다.&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;&lt;b&gt;속성은 단일 값을 가진다&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;하나의 셀에는 하나의 값만 존재해야 한다. 예: 주소 = 서울 (O), 주소 = 서울, 부산 (X)&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;&lt;b&gt;속성은 서로 다른 이름을 가진다&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;하나의 릴레이션 내에서 속성명(열 이름)은 중복될 수 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;&lt;b&gt;속성의 값은 동일한 도메인 값만 가진다&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;특정 속성의 값은 모두 동일한 데이터 유형(도메인)을 따라야 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;&lt;b&gt;속성의 순서는 상관없다&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;(이름, 주소)나 (주소, 이름)은 동일한 릴레이션 구조로 간주됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;&lt;b&gt;릴레이션 내 중복된 투플은 허용되지 않는다&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;모든 행은 유일해야 하며, 동일한 값을 가지는 두 행은 존재할 수 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: decimal;&quot;&gt;&lt;b&gt;투플의 순서는 상관없다&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;데이터의 삽입, 삭제, 갱신에 따라 순서는 달라질 수 있으며 의미는 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3 .&amp;nbsp; 키(Key)의&amp;nbsp; 개념&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;Key?&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;릴레이션 내에서&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;각 투플(행)을 유일하게 식별&lt;/b&gt;하기 위해 사용하는 속성 또는 속성의 집합.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;키는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;중복된 투플을 방지&lt;/b&gt;하며, 릴레이션 간의 관계를 맺을 때도 사용됨.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;Key의 종류&lt;/h3&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;슈퍼키(Super Key)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;투플을 유일하게 식별할 수 있는 모든 속성 집합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;후보키(Candidate Key)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;슈퍼키 중 최소 속성 집합&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;기본키(Primary Key)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;후보키 중 하나를 대표로 선택한 키 (NULL, 중복 불가)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;대체키(Alternate Key)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;기본키로 선택되지 않은 후보키&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;대리키(Surrogate Key)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;의미 없는 일련번호 등 시스템에서 생성한 인조 키&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;외래키(Foreign Key)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;다른 릴레이션의 기본키를 참조하는 속성&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;외래키는 참조 릴레이션의 기본키와 도메인이 같아야 하며, 값이 변경되면 연쇄적으로 영향을 받는다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4 .&amp;nbsp; 무결성&amp;nbsp; 제약&amp;nbsp; 조건&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터의 정확성과 일관성을 보장하기 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;무결성 제약조건&lt;/b&gt;이 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;구분&lt;/td&gt;
&lt;td&gt;도메인 무결성&lt;/td&gt;
&lt;td&gt;개체 무결성&lt;/td&gt;
&lt;td&gt;참조 무결성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대상&lt;/td&gt;
&lt;td&gt;속성&lt;/td&gt;
&lt;td&gt;투플(기본키)&lt;/td&gt;
&lt;td&gt;속성 및 투플(외래키)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동일 용어&lt;/td&gt;
&lt;td&gt;Domain Constraint&lt;/td&gt;
&lt;td&gt;Primary Key Constraint&lt;/td&gt;
&lt;td&gt;Foreign Key Constraint&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;NULL 허용&lt;/td&gt;
&lt;td&gt;허용&lt;/td&gt;
&lt;td&gt;불가&lt;/td&gt;
&lt;td&gt;허용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;제약 개수&lt;/td&gt;
&lt;td&gt;속성 수와 동일&lt;/td&gt;
&lt;td&gt;1개&lt;/td&gt;
&lt;td&gt;0~여러 개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;특징&lt;/td&gt;
&lt;td&gt;도메인 정의 우선 확인&lt;/td&gt;
&lt;td&gt;기본키 중복/NULL 불가&lt;/td&gt;
&lt;td&gt;부모 릴레이션 존재 확인&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt;예시&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;개체 무결성 위반: 동일한 기본키 값을 가진 투플 삽입 시 거부&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;참조 무결성 위반: 존재하지 않는 외래키 값을 참조하는 경우 삽입/수정 불가&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;기타&amp;nbsp; 참고&amp;nbsp; 사항&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;MySQL Workbench는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;단순 클라이언트 앱&lt;/b&gt;이며, 접속을 위해&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;계정과 주소&lt;/b&gt;가 필요하다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;예시로 사용된 계정은 cool, 데이터베이스는 project, 샘플 테이블에는 project_dept.sql, project_emp.sql 등이 포함된다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style=&quot;color: #333333; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;reaction-7&quot; data-tistory-react-app=&quot;Reaction&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>신세계아이앤씨 클라우드 엔지니어 양성과정 5차수/RDB - MySQL</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/81</guid>
      <comments>https://chamusik.tistory.com/81#entry81comment</comments>
      <pubDate>Sun, 15 Jun 2025 22:27:02 +0900</pubDate>
    </item>
    <item>
      <title>Ch1. 데이터와 프로그래밍</title>
      <link>https://chamusik.tistory.com/80</link>
      <description>&lt;h2 style=&quot;box-sizing: border-box; border-width: 1px 10px; border-bottom-style: solid; border-bottom-color: 006DD7; border-left-style: solid; border-left-color: 006DD7; letter-spacing: -1px; padding: 5px; margin: 5px 0px; line-height: 1.3;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: 006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;데이터와 프로그래밍&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;목차&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;1. 퀀트 투자란?&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;2. 데이터 구하기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;3. 프로그래밍이 필요한 이유&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;b&gt;4. R 프로그램과 주요 패키지&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1 .&amp;nbsp; 퀀트&amp;nbsp; 투자란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;퀀트(Quant)&lt;/b&gt; = Quantitative(정량적)의 줄임말&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;전통적인 투자와 퀀트 투자의 차이&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;전통적 투자&lt;/b&gt;: 기업분석, 산업동향 &amp;rarr; 정성적 판단&lt;/li&gt;
&lt;li&gt;&lt;b&gt;퀀트 투자&lt;/b&gt;: 수학, 통계 &amp;rarr; 정량적 모델링&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;퀀트 투자 프로세스&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;&quot; style=&quot;color: #383a42; text-align: left;&quot;&gt;&lt;code&gt;데이터 수집 &amp;rarr; 데이터 정리 &amp;rarr; 지표 생성 &amp;rarr; 백테스트 &amp;rarr; 실제 투자&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 과학과 동일한 워크플로우&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2 .&amp;nbsp; 데이터&amp;nbsp; 구하기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;유료 서비스 - too expensive&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;해외&lt;/b&gt;: 블룸버그(블룸버그는 '블대리'라고 불릴 정도로 대리 연봉과 비슷하다), Factset&lt;/li&gt;
&lt;li&gt;&lt;b&gt;국내&lt;/b&gt;: DataGuide&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;합리적 대안 - reasonable&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;해외 데이터&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Tiingo&lt;/b&gt;: 월 $10, 64,386개 주식 30년 데이터&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Quandl&lt;/b&gt;: API 지원, 상대적으로 저렴&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;국내 데이터&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;야후 파이낸스&lt;/li&gt;
&lt;li&gt;네이버 금융&lt;/li&gt;
&lt;li&gt;크롤링 필요하지만 무료&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;pre class=&quot;r&quot; style=&quot;color: #383a42; text-align: left;&quot;&gt;&lt;code&gt;# 예시: 국내 데이터 크롤링 기본 구조
library(rvest)
library(httr)

# 네이버 금융에서 삼성전자 주가 가져오기
url &amp;lt;- &quot;https://finance.naver.com/item/main.naver?code=005930&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3 .&amp;nbsp; 프로그래밍이&amp;nbsp; 필요한&amp;nbsp; 이유&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;Excel의 한계&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;확장성 문제&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;angelscript&quot; style=&quot;color: #383a42; text-align: left;&quot;&gt;&lt;code&gt;10개 종목 &amp;rarr; 엑셀로 가능
1000개 종목 &amp;rarr; 수작업 불가능&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;효율성 문제&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;100MB 데이터 &amp;times; 10개 전략 = 1GB 엑셀 파일&lt;/li&gt;
&lt;li&gt;데이터 변경시 모든 파일 수정 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;프로그래밍의 장점&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;효율성&lt;/b&gt;&lt;/p&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;clean&quot; style=&quot;color: #383a42; text-align: left;&quot;&gt;&lt;code&gt;# 12개월 모멘텀 &amp;rarr; 6개월 모멘텀 변경
# 엑셀: 전체 수식 다시 작성
# R: 한 줄만 수정
n &amp;lt;- 12  # n &amp;lt;- 6 으로 변경만 하면 끝!&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;파일 관리&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;스크립트 파일: 몇 KB&lt;/li&gt;
&lt;li&gt;원본 데이터: 1개 파일만 관리&lt;/li&gt;
&lt;li&gt;무한 재사용 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;4 .&amp;nbsp; R 프로그램과&amp;nbsp; 주요&amp;nbsp; 패키지&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;왜 R을 이용?&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;무료&lt;/b&gt; 오픈소스&lt;/li&gt;
&lt;li&gt;&lt;b&gt;통계/계량분석&lt;/b&gt; 분야에서 독보적&lt;/li&gt;
&lt;li&gt;&lt;b&gt;풍부한 패키지&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;퀀트 투자 필수 패키지&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;clean&quot; style=&quot;color: #383a42; text-align: left;&quot;&gt;&lt;code&gt;# 패키지 설치 코드
pkg &amp;lt;- c('quantmod', 'PerformanceAnalytics', 'xts', 'zoo',
         'httr', 'rvest', 'dplyr', 'ggplot2')

install.packages(pkg)&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt; 패키지주요&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 기능핵심 &lt;/b&gt;&lt;/td&gt;
&lt;td&gt;&lt;b&gt; 함수 &lt;/b&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;quantmod&lt;/td&gt;
&lt;td&gt;데이터 다운로드, 기술적 지표&lt;/td&gt;
&lt;td&gt;getSymbols()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PerformanceAnalytics&lt;/td&gt;
&lt;td&gt;성과/위험 측정&lt;/td&gt;
&lt;td&gt;Return.portfolio()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;xts&lt;/td&gt;
&lt;td&gt;시계열 데이터 처리&lt;/td&gt;
&lt;td&gt;apply.monthly()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;httr/rvest&lt;/td&gt;
&lt;td&gt;웹 크롤링&lt;/td&gt;
&lt;td&gt;GET(), POST()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;dplyr&lt;/td&gt;
&lt;td&gt;데이터 가공&lt;/td&gt;
&lt;td&gt;filter(), select()&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ggplot2&lt;/td&gt;
&lt;td&gt;데이터 시각화&lt;/td&gt;
&lt;td&gt;ggplot()&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;패키지 한번에 설치하기&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;div&gt;
&lt;div&gt;
&lt;pre class=&quot;haxe&quot; style=&quot;color: #383a42; text-align: left;&quot;&gt;&lt;code&gt;pkg = c('magrittr', 'quantmod', 'rvest', 'httr', 'jsonlite',
        'readr', 'readxl', 'stringr', 'lubridate', 'dplyr',
        'tidyr', 'ggplot2', 'corrplot', 'dygraphs',
        'highcharter', 'plotly', 'PerformanceAnalytics',
        'nloptr', 'quadprog', 'RiskPortfolios', 'cccp',
        'timetk', 'broom', 'stargazer', 'timeSeries')

new.pkg = pkg[!(pkg %in% installed.packages()[, &quot;Package&quot;])]
if (length(new.pkg)) {
  install.packages(new.pkg, dependencies = TRUE)
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;정리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;퀀트 투자 = &lt;b&gt;데이터 과학 + 금융&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;핵심 요소&lt;/b&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;데이터 (무료 소스 활용 가능)&lt;/li&gt;
&lt;li&gt;프로그래밍 (엑셀 한계 극복)&lt;/li&gt;
&lt;li&gt;R (통계 분야 GOAT)&lt;/li&gt;
&lt;/ol&gt;</description>
      <category>프로젝트/R을 이용한 퀀트 투자 포트폴리오 만들기</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/80</guid>
      <comments>https://chamusik.tistory.com/80#entry80comment</comments>
      <pubDate>Tue, 10 Jun 2025 23:59:02 +0900</pubDate>
    </item>
    <item>
      <title>R 기초 (5) - 데이터 구조 변경하기</title>
      <link>https://chamusik.tistory.com/79</link>
      <description>&lt;h2 style=&quot;box-sizing: border-box; border-width: 1px 10px; border-bottom-style: solid; border-bottom-color: 006DD7; border-left-style: solid; border-left-color: 006DD7; letter-spacing: -1px; padding: 5px; margin: 5px 0px; line-height: 1.3;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: 006dd7; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;데이터 구조 변경하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;h4 style=&quot;border-left: 4px solid #000000; letter-spacing: -1px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&amp;nbsp;목차&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;1.&amp;nbsp;tidyr&amp;nbsp;패키지를 이용한 데이터 모양 바꾸기&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2. dplyr 패키지를 이용한 데이터 모양 바꾸기&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3. 정리&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;1 .&amp;nbsp; tidyr&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;745&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CuJTG/btsOsuLq8qZ/jPC0vWNg9xFOSrttTdpWkK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CuJTG/btsOsuLq8qZ/jPC0vWNg9xFOSrttTdpWkK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CuJTG/btsOsuLq8qZ/jPC0vWNg9xFOSrttTdpWkK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCuJTG%2FbtsOsuLq8qZ%2FjPC0vWNg9xFOSrttTdpWkK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;726&quot; height=&quot;745&quot; data-origin-width=&quot;726&quot; data-origin-height=&quot;745&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n0VPr/btsOr5ZG8WK/9NWJCqqvyukniD372PwBv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n0VPr/btsOr5ZG8WK/9NWJCqqvyukniD372PwBv0/img.png&quot; data-origin-width=&quot;469&quot; data-origin-height=&quot;443&quot; data-is-animation=&quot;false&quot; style=&quot;width: 48.8708%; margin-right: 10px;&quot; data-widthpercent=&quot;49.45&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n0VPr/btsOr5ZG8WK/9NWJCqqvyukniD372PwBv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn0VPr%2FbtsOr5ZG8WK%2F9NWJCqqvyukniD372PwBv0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;469&quot; height=&quot;443&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/diLDZA/btsOrlvy6My/gDZrCznMncUtIpVFPfemY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/diLDZA/btsOrlvy6My/gDZrCznMncUtIpVFPfemY1/img.png&quot; data-origin-width=&quot;696&quot; data-origin-height=&quot;643&quot; data-is-animation=&quot;false&quot; style=&quot;width: 49.9664%;&quot; data-widthpercent=&quot;50.55&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/diLDZA/btsOrlvy6My/gDZrCznMncUtIpVFPfemY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdiLDZA%2FbtsOrlvy6My%2FgDZrCznMncUtIpVFPfemY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;696&quot; height=&quot;643&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dPnAkH/btsOrl3oZN9/JKyUt09r2V34yXwc4vl4XK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dPnAkH/btsOrl3oZN9/JKyUt09r2V34yXwc4vl4XK/img.png&quot; data-origin-width=&quot;546&quot; data-origin-height=&quot;423&quot; data-is-animation=&quot;false&quot; style=&quot;width: 53.6198%; margin-right: 10px;&quot; data-widthpercent=&quot;54.25&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dPnAkH/btsOrl3oZN9/JKyUt09r2V34yXwc4vl4XK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdPnAkH%2FbtsOrl3oZN9%2FJKyUt09r2V34yXwc4vl4XK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;546&quot; height=&quot;423&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TS39V/btsOroeLkqd/ij8umY6XTfzRcl5D7oabH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TS39V/btsOroeLkqd/ij8umY6XTfzRcl5D7oabH0/img.png&quot; data-origin-width=&quot;701&quot; data-origin-height=&quot;644&quot; data-is-animation=&quot;false&quot; style=&quot;width: 45.2174%;&quot; data-widthpercent=&quot;45.75&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TS39V/btsOroeLkqd/ij8umY6XTfzRcl5D7oabH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTS39V%2FbtsOroeLkqd%2Fij8umY6XTfzRcl5D7oabH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;701&quot; height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;126&quot; data-start=&quot;82&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;[tidyr 패키지 &amp;ndash; 데이터의 형태를 바꾸는 데 중점]&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;188&quot; data-start=&quot;128&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;188&quot; data-start=&quot;130&quot; data-ke-size=&quot;size16&quot;&gt;핵심 목적: 데이터를 wide &amp;harr; long 형태로 변환하거나, 열을 나누고 합치고 채우는 작업&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;213&quot; data-start=&quot;190&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;213&quot; data-start=&quot;190&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;pivot_longer()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;272&quot; data-start=&quot;214&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;229&quot; data-start=&quot;214&quot;&gt;&lt;b&gt;가로 &amp;rarr; 세로&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;272&quot; data-start=&quot;230&quot;&gt;여러 열을 하나의 key-value 쌍으로 바꿔 긴 형태의 데이터로 변환&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;296&quot; data-start=&quot;274&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;pivot_wider()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;345&quot; data-start=&quot;297&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;312&quot; data-start=&quot;297&quot;&gt;&lt;b&gt;세로 &amp;rarr; 가로&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;345&quot; data-start=&quot;313&quot;&gt;key-value 쌍의 데이터를 다시 넓은 형태로 복원&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;366&quot; data-start=&quot;347&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;separate()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;430&quot; data-start=&quot;367&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;390&quot; data-start=&quot;367&quot;&gt;하나의 열을 &lt;b&gt;여러 열로 나눔&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;430&quot; data-start=&quot;391&quot;&gt;예: &quot;745/19987071&quot; &amp;rarr; &quot;745&quot;, &quot;19987071&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;448&quot; data-start=&quot;432&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;unite()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;498&quot; data-start=&quot;449&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;472&quot; data-start=&quot;449&quot;&gt;여러 열을 &lt;b&gt;하나의 열로 합침&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;498&quot; data-start=&quot;473&quot;&gt;예: &quot;19&quot;, &quot;99&quot; &amp;rarr; &quot;19_99&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;515&quot; data-start=&quot;500&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;fill()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;540&quot; data-start=&quot;516&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;540&quot; data-start=&quot;516&quot;&gt;NA 값을 &lt;b&gt;이전 행의 값으로 채움&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;563&quot; data-start=&quot;542&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;replace_na()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;586&quot; data-start=&quot;564&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;586&quot; data-start=&quot;564&quot;&gt;NA 값을 &lt;b&gt;지정한 값으로 대체&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;2 .&amp;nbsp; dplyr&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p&gt;&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pRtfK/btsOsc5Davi/qKcpv5u1UFJIRvxQDd1R31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pRtfK/btsOsc5Davi/qKcpv5u1UFJIRvxQDd1R31/img.png&quot; data-origin-width=&quot;766&quot; data-origin-height=&quot;605&quot; data-is-animation=&quot;false&quot; style=&quot;width: 62.1109%; margin-right: 10px;&quot; data-widthpercent=&quot;62.84&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pRtfK/btsOsc5Davi/qKcpv5u1UFJIRvxQDd1R31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpRtfK%2FbtsOsc5Davi%2FqKcpv5u1UFJIRvxQDd1R31%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;766&quot; height=&quot;605&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi4qZy/btsOrVC17kk/JpP6HjSzQHnKlLEb1KEiCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi4qZy/btsOrVC17kk/JpP6HjSzQHnKlLEb1KEiCK/img.png&quot; data-origin-width=&quot;557&quot; data-origin-height=&quot;744&quot; data-is-animation=&quot;false&quot; style=&quot;width: 36.7263%;&quot; data-widthpercent=&quot;37.16&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi4qZy/btsOrVC17kk/JpP6HjSzQHnKlLEb1KEiCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi4qZy%2FbtsOrVC17kk%2FJpP6HjSzQHnKlLEb1KEiCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;557&quot; height=&quot;744&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2TtpQ/btsOsmNF0Xq/v5ZpxFJGXFbPUIGuEKO0a0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2TtpQ/btsOsmNF0Xq/v5ZpxFJGXFbPUIGuEKO0a0/img.png&quot; data-origin-width=&quot;905&quot; data-origin-height=&quot;705&quot; data-is-animation=&quot;false&quot; style=&quot;width: 46.3938%; margin-right: 10px;&quot; data-widthpercent=&quot;46.94&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2TtpQ/btsOsmNF0Xq/v5ZpxFJGXFbPUIGuEKO0a0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2TtpQ%2FbtsOsmNF0Xq%2Fv5ZpxFJGXFbPUIGuEKO0a0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;905&quot; height=&quot;705&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bfxTGz/btsOqE22gfP/7v371ILfGKfaEaNAbGQlp1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bfxTGz/btsOqE22gfP/7v371ILfGKfaEaNAbGQlp1/img.png&quot; data-origin-width=&quot;875&quot; data-origin-height=&quot;603&quot; data-is-animation=&quot;false&quot; style=&quot;width: 52.4434%;&quot; data-widthpercent=&quot;53.06&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bfxTGz/btsOqE22gfP/7v371ILfGKfaEaNAbGQlp1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbfxTGz%2FbtsOqE22gfP%2F7v371ILfGKfaEaNAbGQlp1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;875&quot; height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4HB2w/btsOrlCiCqb/0Y1Dhz9ku19aMVhV16n8TK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4HB2w/btsOrlCiCqb/0Y1Dhz9ku19aMVhV16n8TK/img.png&quot; data-origin-width=&quot;523&quot; data-origin-height=&quot;801&quot; data-is-animation=&quot;false&quot; style=&quot;width: 29.6228%; margin-right: 10px;&quot; data-widthpercent=&quot;29.97&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4HB2w/btsOrlCiCqb/0Y1Dhz9ku19aMVhV16n8TK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4HB2w%2FbtsOrlCiCqb%2F0Y1Dhz9ku19aMVhV16n8TK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;523&quot; height=&quot;801&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n30HI/btsOryH8HL4/vjWBmKRhg3UllCq7VLCCl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n30HI/btsOryH8HL4/vjWBmKRhg3UllCq7VLCCl0/img.png&quot; data-origin-width=&quot;894&quot; data-origin-height=&quot;586&quot; data-is-animation=&quot;false&quot; style=&quot;width: 69.2144%;&quot; data-widthpercent=&quot;70.03&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n30HI/btsOryH8HL4/vjWBmKRhg3UllCq7VLCCl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn30HI%2FbtsOryH8HL4%2FvjWBmKRhg3UllCq7VLCCl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;894&quot; height=&quot;586&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cRMDzZ/btsOr1JKr2f/TbSpW9zvKVpeOC4nboN811/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cRMDzZ/btsOr1JKr2f/TbSpW9zvKVpeOC4nboN811/img.png&quot; data-origin-width=&quot;904&quot; data-origin-height=&quot;607&quot; data-is-animation=&quot;false&quot; style=&quot;width: 43.6048%; margin-right: 10px;&quot; data-widthpercent=&quot;44.64&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cRMDzZ/btsOr1JKr2f/TbSpW9zvKVpeOC4nboN811/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcRMDzZ%2FbtsOr1JKr2f%2FTbSpW9zvKVpeOC4nboN811%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;904&quot; height=&quot;607&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pvkYy/btsOsBRetUq/VkhCScKGj2rTr1pn26rvAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pvkYy/btsOsBRetUq/VkhCScKGj2rTr1pn26rvAk/img.png&quot; data-origin-width=&quot;903&quot; data-origin-height=&quot;843&quot; data-is-animation=&quot;false&quot; style=&quot;width: 31.3628%; margin-right: 10px;&quot; data-widthpercent=&quot;32.11&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pvkYy/btsOsBRetUq/VkhCScKGj2rTr1pn26rvAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpvkYy%2FbtsOsBRetUq%2FVkhCScKGj2rTr1pn26rvAk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;903&quot; height=&quot;843&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kwE8Z/btsOtfNMnbD/qt2436QTwPrP05N2mKRR6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kwE8Z/btsOtfNMnbD/qt2436QTwPrP05N2mKRR6k/img.png&quot; data-origin-width=&quot;653&quot; data-origin-height=&quot;842&quot; data-is-animation=&quot;false&quot; style=&quot;width: 22.7068%;&quot; data-widthpercent=&quot;23.25&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kwE8Z/btsOtfNMnbD/qt2436QTwPrP05N2mKRR6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkwE8Z%2FbtsOtfNMnbD%2Fqt2436QTwPrP05N2mKRR6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;653&quot; height=&quot;842&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imagegridblock&quot;&gt;
  &lt;div class=&quot;image-container&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cklOcM/btsOsTEc3Y0/stZKCTore8kQ5mDkhDseq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cklOcM/btsOsTEc3Y0/stZKCTore8kQ5mDkhDseq1/img.png&quot; data-origin-width=&quot;616&quot; data-origin-height=&quot;425&quot; data-is-animation=&quot;false&quot; style=&quot;width: 53.7586%; margin-right: 10px;&quot; data-widthpercent=&quot;54.39&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cklOcM/btsOsTEc3Y0/stZKCTore8kQ5mDkhDseq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcklOcM%2FbtsOsTEc3Y0%2FstZKCTore8kQ5mDkhDseq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;616&quot; height=&quot;425&quot;/&gt;&lt;/span&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cveyCM/btsOsnlvTq6/ze0yePwofmJSFicJqzXJ21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cveyCM/btsOsnlvTq6/ze0yePwofmJSFicJqzXJ21/img.png&quot; data-origin-width=&quot;711&quot; data-origin-height=&quot;585&quot; data-is-animation=&quot;false&quot; style=&quot;width: 45.0786%;&quot; data-widthpercent=&quot;45.61&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cveyCM/btsOsnlvTq6/ze0yePwofmJSFicJqzXJ21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcveyCM%2FbtsOsnlvTq6%2Fze0yePwofmJSFicJqzXJ21%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;711&quot; height=&quot;585&quot;/&gt;&lt;/span&gt;&lt;/div&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;643&quot; data-start=&quot;593&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;[dplyr 패키지 &amp;ndash; 데이터의 내용을 가공하고 요약하는 데 중점]&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-end=&quot;697&quot; data-start=&quot;645&quot; data-ke-style=&quot;style2&quot;&gt;
&lt;p data-end=&quot;697&quot; data-start=&quot;647&quot; data-ke-size=&quot;size16&quot;&gt;핵심 목적: 행 또는 열을 필터링, 선택, 그룹화, 요약, 정렬 등으로 데이터 조작&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p data-end=&quot;716&quot; data-start=&quot;699&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-end=&quot;716&quot; data-start=&quot;699&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;select()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;783&quot; data-start=&quot;717&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;739&quot; data-start=&quot;717&quot;&gt;&lt;b&gt;특정 열만 선택&lt;/b&gt;하거나 제외&lt;/li&gt;
&lt;li data-end=&quot;783&quot; data-start=&quot;740&quot;&gt;패턴 조건도 가능: starts_with(), ends_with()&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;802&quot; data-start=&quot;785&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;rename()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;849&quot; data-start=&quot;803&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;814&quot; data-start=&quot;803&quot;&gt;열 이름 변경&lt;/li&gt;
&lt;li data-end=&quot;849&quot; data-start=&quot;815&quot;&gt;예: rename(new_name = old_name)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;868&quot; data-start=&quot;851&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;filter()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;887&quot; data-start=&quot;869&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;887&quot; data-start=&quot;869&quot;&gt;&lt;b&gt;조건에 맞는 행만 추출&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;909&quot; data-start=&quot;889&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;summarize()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;965&quot; data-start=&quot;910&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;938&quot; data-start=&quot;910&quot;&gt;&lt;b&gt;요약값(평균, 최대, 최소 등)&lt;/b&gt; 계산&lt;/li&gt;
&lt;li data-end=&quot;965&quot; data-start=&quot;939&quot;&gt;na.rm = TRUE로 NA 제외 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;986&quot; data-start=&quot;967&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;group_by()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1043&quot; data-start=&quot;987&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1010&quot; data-start=&quot;987&quot;&gt;&lt;b&gt;지정된 열을 기준으로 그룹화&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1043&quot; data-start=&quot;1011&quot;&gt;summarize()와 함께 쓰면 그룹별 통계 계산&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1063&quot; data-start=&quot;1045&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;arrange()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1102&quot; data-start=&quot;1064&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1076&quot; data-start=&quot;1064&quot;&gt;&lt;b&gt;행 정렬&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1102&quot; data-start=&quot;1077&quot;&gt;오름차순 기본, desc()로 내림차순&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1121&quot; data-start=&quot;1104&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;mutate()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1166&quot; data-start=&quot;1122&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1138&quot; data-start=&quot;1122&quot;&gt;&lt;b&gt;새로운 열 생성&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1166&quot; data-start=&quot;1139&quot;&gt;기존 열들 간의 계산을 통해 새로운 변수 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-end=&quot;1185&quot; data-start=&quot;1168&quot; data-ke-size=&quot;size18&quot;&gt;&lt;b&gt;*_join()&lt;/b&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1316&quot; data-start=&quot;1186&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1205&quot; data-start=&quot;1186&quot;&gt;&lt;b&gt;두 데이터프레임 병합&lt;/b&gt;&lt;/li&gt;
&lt;li data-end=&quot;1316&quot; data-start=&quot;1206&quot;&gt;종류:
&lt;ul style=&quot;list-style-type: disc;&quot; data-end=&quot;1316&quot; data-start=&quot;1214&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li data-end=&quot;1238&quot; data-start=&quot;1214&quot;&gt;inner_join(): 공통된 것만&lt;/li&gt;
&lt;li data-end=&quot;1263&quot; data-start=&quot;1241&quot;&gt;left_join(): 왼쪽 기준&lt;/li&gt;
&lt;li data-end=&quot;1290&quot; data-start=&quot;1266&quot;&gt;right_join(): 오른쪽 기준&lt;/li&gt;
&lt;li data-end=&quot;1316&quot; data-start=&quot;1293&quot;&gt;full_join(): 전체 합치기&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 style=&quot;border-left: 10px solid #000000; letter-spacing: -2px; padding: 0px 0px 0px 7px; margin: 5px 0px;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;color: #000000; font-family: 'Noto Sans Demilight', 'Noto Sans KR';&quot;&gt;&lt;b&gt;3 .&amp;nbsp; 정리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;table id=&quot;20a63a06-2dff-807b-905d-ce304d9f334f&quot; style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr id=&quot;20a63a06-2dff-80bc-bcc0-fc7dcbf50f4e&quot;&gt;
&lt;td id=&quot;qqjY&quot;&gt;구분&lt;/td&gt;
&lt;td id=&quot;pV|e&quot;&gt;tidyr&lt;/td&gt;
&lt;td id=&quot;QnG[&quot;&gt;dplyr&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;20a63a06-2dff-80e4-81c6-f1c55ecc43cf&quot;&gt;
&lt;td id=&quot;qqjY&quot;&gt;목적&lt;/td&gt;
&lt;td id=&quot;pV|e&quot;&gt;데이터 &lt;b&gt;형태(structure)&lt;/b&gt; 변환&lt;/td&gt;
&lt;td id=&quot;QnG[&quot;&gt;데이터 &lt;b&gt;내용(content)&lt;/b&gt; 조작&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;20a63a06-2dff-8015-a792-de28fcdd89d3&quot;&gt;
&lt;td id=&quot;qqjY&quot;&gt;주요 기능&lt;/td&gt;
&lt;td id=&quot;pV|e&quot;&gt;pivot_longer, pivot_wider, separate, unite&lt;/td&gt;
&lt;td id=&quot;QnG[&quot;&gt;select, filter, mutate, summarize, join 등&lt;/td&gt;
&lt;/tr&gt;
&lt;tr id=&quot;20a63a06-2dff-80d1-ad8b-ec3926b4af27&quot;&gt;
&lt;td id=&quot;qqjY&quot;&gt;초점&lt;/td&gt;
&lt;td id=&quot;pV|e&quot;&gt;열/행 구조 바꾸기&lt;/td&gt;
&lt;td id=&quot;QnG[&quot;&gt;값 필터링, 그룹화, 정렬, 계산 등&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;</description>
      <category>컴퓨터 언어/R</category>
      <author>chamusik</author>
      <guid isPermaLink="true">https://chamusik.tistory.com/79</guid>
      <comments>https://chamusik.tistory.com/79#entry79comment</comments>
      <pubDate>Fri, 6 Jun 2025 16:50:42 +0900</pubDate>
    </item>
  </channel>
</rss>