<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>developer</title>
    <link>https://developer0513.tistory.com/</link>
    <description>개인적인 개발이야기, 관심사항에 대한 공유입니다.</description>
    <language>ko</language>
    <pubDate>Wed, 24 Jun 2026 01:20:31 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>somiyuralove</managingEditor>
    <image>
      <title>developer</title>
      <url>https://tistory1.daumcdn.net/tistory/2984834/attach/44a1d82664eb4f13a46db6df2f1d88c7</url>
      <link>https://developer0513.tistory.com</link>
    </image>
    <item>
      <title>데이터 거버넌스</title>
      <link>https://developer0513.tistory.com/263</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;데이터 거버넌스는 조직 내에서 데이터를 관리하고 보호하는 프레임워크와 절차를 의미합니다. 이는 데이터의 품질, 보안, 접근성, 유효성 등을 유지하고 최적화하는 데 도움이 되며, 데이터 활용 시 충돌과 문제를 방지하기 위한 체계를 제공합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 거버넌스의 목표는 다음과 같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;decimal&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;li&gt;&lt;b&gt;위험 관리&lt;/b&gt;: 데이터 노출과 손실을 방지하고 데이터 보안을 강화하여 조직 내 데이터에 대한 위험을 최소화합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;조직 간 협력 강화&lt;/b&gt;: 데이터 거버넌스는 다양한 부서나 팀 간의 협력을 촉진하며, 일관된 용어와 정의를 사용하여 의사 소통을 원활하게 합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 목표를 달성하기 위해 데이터 거버넌스는 데이터 관리 책임자, 데이터 소유자, 데이터 정책 및 규정, 데이터 품질 기준, 데이터 접근 권한 관리 등 다양한 요소를 포함합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;많은 기업과 조직이 데이터 거버넌스를 도입하여 데이터를 효율적으로 관리하고 활용하고 있습니다. 이는 비즈니스 성과를 향상시키고 데이터를 기반으로 한 더 나은 전략 수립을 가능하게 해줍니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #545454; text-align: start;&quot;&gt;
&lt;div data-component=&quot;Section&quot; data-model=&quot;/korea/products/technology-platform/master-data-governance/what-is-data-governance/_jcr_content/par/section_1661712951.model.json&quot; data-isdynamicheadline=&quot;false&quot; data-isdynamicparagraph=&quot;false&quot; data-component-id=&quot;Section_6&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #3c3c3c;&quot;&gt;
&lt;div&gt;기업 데이터 거버넌스는 조직의 데이터가 처음부터 정확하고 이후 입력, 저장, 조작, 액세스, 삭제되는 과정에서 올바르게 처리되도록 시행하는 모든 정책과 절차를 포함합니다. 데이터 거버넌스의 역할에는 인프라 및 기술 구축, 프로세스와 정책의 설정과 유지관리, 특정 유형의 데이터를 처리하고 보호할 책임과 권한을 지닌 조직 내 개인(또는 직위)을 식별하는 활동 등이 있습니다.&lt;/div&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 거버넌스는 규제준수의 핵심 부분입니다. 시스템은 저장, 처리, 보안 메커니즘을 관리합니다. 하지만 정책이 정의되고 절차가 건전하며 기술이 적절히 관리되고 데이터가 보호받도록 하는 일은 사용자, 즉 거버넌스 조직의 측면입니다. 데이터는 시스템에 입력되기 전, 사용되는 동안, 사용하거나 다른 곳에 저장할 목적으로 시스템에서 검색될 때 모두 올바르게 처리되어야 합니다.&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 거버넌스가 데이터의 정확성, 신뢰성, 무결성, 보안을 구축하는 정책과 절차를 설정하는 데 비해 데이터 관리는 이러한 절차를 구현하는 과정입니다. 데이터 관리 책임자는 데이터를 처리, 저장, 보호하는 데 사용되는 절차와 툴을 관리하고 감독합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #545454; text-align: start;&quot;&gt;
&lt;div data-component=&quot;Section&quot; data-model=&quot;/korea/products/technology-platform/master-data-governance/what-is-data-governance/_jcr_content/par/section_copy_copy_copy_701449881.model.json&quot; data-isdynamicheadline=&quot;false&quot; data-isdynamicparagraph=&quot;false&quot; data-component-id=&quot;Section_7&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000; text-align: center;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;데이터 거버넌스의 이점&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #3c3c3c;&quot;&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;비즈니스의 모든 측면에서 조직이 데이터에 크게 의존하는 요즘과 같은 시기에는 정보에 관한 전략을 반드시 갖춰야 합니다. 데이터는 회계 및 재무, 계획 및 관리, 오더 관리, 고객 서비스, 일정 수립, 프로세스 제어, 엔지니어링, 설계 등 거의 모든 컴퓨터 및 기술 기능의 핵심입니다. 정확하고 신뢰할 수 있는 데이터는 이러한 시스템과 기능을 효과적으로 운영하는 데 중요합니다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;신뢰할 수 있는 우수한 데이터가 비즈니스에 중요하다는 점을 고려하면 조직은 데이터의 생성, 품질, 처리 및 보안에 신경 써야 합니다. 또 그렇게 함으로써 시스템과 데이터베이스를 신뢰할 수 있고 실제 상황을 반영해 의사결정과 비즈니스 성공을 효과적으로 지원하게 됩니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #545454; text-align: start;&quot;&gt;
&lt;div data-component=&quot;Section&quot; data-model=&quot;/korea/products/technology-platform/master-data-governance/what-is-data-governance/_jcr_content/par/section_copy_copy_copy_701449881.model.json&quot; data-isdynamicheadline=&quot;false&quot; data-isdynamicparagraph=&quot;false&quot; data-component-id=&quot;Section_7&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #3c3c3c;&quot;&gt;
&lt;div&gt;데이터 거버넌스의 이점은 다음과 같습니다.&lt;/div&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #3c3c3c;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;보다 신뢰할 수 있는 개선된 데이터:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;이게 바로 데이터 거버넌스의 핵심 취지입니다. 사용자와 의사결정자가 데이터를 더욱 신뢰하게 되고 그 데이터를 기반으로 의사결정을 내릴 때 더 확신을 가질 수 있습니다. 또 정확한 정보를 기반으로 하므로 실제로 더 나은 의사결정을 내립니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;단일 버전의 데이터:&lt;/b&gt;&amp;nbsp;조직의 모든 부분과 모든 의사결정자가 동일한 정보를 가지고 협력할 수 있게 된다면 장점은 무궁무진합니다. 누구의 스프레드시트나 계획이 '더 나은지' 또는 더 최신 자료인지 논쟁을 벌일 필요가 없습니다. 조직의 모든 부분이 조율됩니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;규제, 법률, 산업 규제준수:&lt;/b&gt;&amp;nbsp;견고한 데이터 관리 절차는 규제준수의 핵심입니다. 감사와 규제 감독 담당자는 데이터 자체보다는 데이터가 어떻게 생성, 처리, 보호되는지를 살펴봅니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;비용 절감:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;감사가 빠르고 간편하게 이루어질 뿐 아니라 일상 운영도 보다 효율적이고 효과적이 됩니다. 잘못되거나 오래된 정보를 바탕으로 의사결정을 내려 발생하는 낭비를 줄일 수 있습니다. 또 현재 진행 중인 활동, 재고, 인력 가용성 등을 정확히 파악해 고객 서비스를 개선할 수 있습니다.&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;조직은 정확성, 일관성, 신뢰성 있는 데이터를 바탕으로 성공을 거두며 이러한 데이터는 탁월한 데이터 거버넌스를 통해서만 얻을 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #545454; text-align: start;&quot;&gt;
&lt;div data-component=&quot;Section&quot; data-model=&quot;/korea/products/technology-platform/master-data-governance/what-is-data-governance/_jcr_content/par/section_844635778.model.json&quot; data-isdynamicheadline=&quot;false&quot; data-isdynamicparagraph=&quot;false&quot; data-component-id=&quot;Section_8&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000; text-align: center;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;데이터 거버넌스를 위한 프레임워크는?&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #3c3c3c;&quot;&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 거버넌스 프레임워크란 데이터 전략과 규제준수의 토대를 마련하는 모델을 의미합니다. 입력, 출력, 저장 매개변수와 같은 데이터 흐름을 설명하는&amp;nbsp;&lt;a style=&quot;color: #007db8;&quot; href=&quot;https://www.sap.com/korea/products/technology-platform/datasphere/what-is-data-modeling.html&quot; data-title=&quot;데이터 모델&quot;&gt;데이터 모델&lt;/a&gt;에서&amp;nbsp;시작하는 거버넌스 모델은 이러한 데이터 흐름이 관리 및 제어되는 방식을 정의하는 규칙, 활동, 책임, 절차, 프로세스를 더합니다.&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;모델은 데이터 거버넌스가 특정 조직 내에서 어떻게 작동하는지 보여주는 일종의 청사진이라고 생각하면 좋습니다. 또 이러한 거버넌스 프레임워크는 각 조직에 고유하므로 데이터 시스템, 조직의 업무 및 책임, 규제 요구사항, 산업 프로토콜의 세부 사항을 반영한다는 점을 기억하세요.&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; 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 style=&quot;color: #3c3c3c;&quot;&gt;&lt;b&gt;데이터 범위:&lt;/b&gt;&amp;nbsp;마스터 데이터, 트랜잭션 데이터, 운영 데이터, 분석 데이터,&amp;nbsp;&lt;a style=&quot;color: #007db8;&quot; href=&quot;https://www.sap.com/korea/products/technology-platform/what-is-big-data.html&quot; data-title=&quot;빅데이터&quot;&gt;빅데이터&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;등&lt;/li&gt;
&lt;li style=&quot;color: #3c3c3c;&quot;&gt;&lt;b&gt;조직 구조:&lt;/b&gt;&amp;nbsp;책임 있는 소유자, 데이터 책임자, IT 부서, 비즈니스 팀, 임원 후원자 간의 역할 및 책임.&lt;/li&gt;
&lt;li style=&quot;color: #3c3c3c;&quot;&gt;&lt;b&gt;데이터 표준 및 정책:&lt;/b&gt;&amp;nbsp;어떤 성과를 위해 무엇을 관리해야 하는지 개괄적으로 설명하는 지침.&lt;/li&gt;
&lt;li style=&quot;color: #3c3c3c;&quot;&gt;&lt;b&gt;감독 및 지표:&lt;/b&gt;&amp;nbsp;전략의 시행과 성공을 측정하는 매개변수.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #545454; text-align: start;&quot;&gt;
&lt;div data-component=&quot;Section&quot; data-model=&quot;/korea/products/technology-platform/master-data-governance/what-is-data-governance/_jcr_content/par/section_1192415340.model.json&quot; data-isdynamicheadline=&quot;false&quot; data-isdynamicparagraph=&quot;false&quot; data-component-id=&quot;Section_9&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000; text-align: center;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;데이터 거버넌스 프로세스&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #3c3c3c;&quot;&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;데이터 거버넌스는 조직이 데이터를 생성, 관리, 보호하는 프로세스 내에 반드시 포함되어야 합니다. 절차적 요소와 가이드라인은 다음과 같습니다.&lt;/span&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;color: #3c3c3c;&quot;&gt;&lt;b&gt;절차 및 문서화:&lt;/b&gt;&amp;nbsp;감사를 만족시키기 위한 목적에서 그치지 않고 문서로 모든 프로세스의 개요를 명확하게 보여줘야 합니다. 그리고 교육과 동기를 부여하는 인센티브를 통해 절차를 강화해야 합니다.&lt;/li&gt;
&lt;li style=&quot;color: #3c3c3c;&quot;&gt;&lt;b&gt;데이터 무결성:&lt;/b&gt;&amp;nbsp;데이터 거버넌스 모델과 프레임워크에 따라 데이터 무결성에 대한 고려사항이 절차에 반영되어야 합니다. 이러한 추가 사항은 직원 측에서 좀 더 주의를 기울여야 하며 절차상의 규율이 요구되어 효율성에 영향을 미칠 수 있습니다(예: 프로세스에 몇 초 더 추가됨). 따라서 자동화가 도움이 될 수 있습니다. 바코드 스캐너나 터치스크린과 같이 비교적 가격이 저렴하며 검증된 기술은 특히 IIoT(산업용 사물인터넷)와 결합되거나 기존 프로세스 제어 시스템과 함께 사용했을 때 데이터를 더욱 빠르고 정확하게 수집할 수 있습니다.&lt;/li&gt;
&lt;li style=&quot;color: #3c3c3c;&quot;&gt;&lt;b&gt;감사 및 품질 관리:&lt;/b&gt;&amp;nbsp;프로세스와 절차상의 규제준수를 확인하기 위해 모든 절차에 대한 데이터 유효성을 주기적으로 점검해야 합니다. 품질 관리 팀이 주기적인 일정으로 점검하는 것이 가장 효과적입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #545454; text-align: start;&quot;&gt;
&lt;div data-component=&quot;Section&quot; data-model=&quot;/korea/products/technology-platform/master-data-governance/what-is-data-governance/_jcr_content/par/section_159293427.model.json&quot; data-isdynamicheadline=&quot;false&quot; data-isdynamicparagraph=&quot;false&quot; data-component-id=&quot;Section_10&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000; text-align: center;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;데이터 거버넌스의 대표적인 최대 난제는?&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #3c3c3c;&quot;&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 거버넌스의 가장 큰 난제는 조직 및 인사 문제와 관련 있다고 볼 수 있습니다. 모든 비즈니스 혁신에는 변화를 주도할 역할과 책임을 가진 사람이 필요합니다. 또한 데이터 관리를 지루하고 수준 낮은 업무로 바라보지 않고 매우 중요한 업무로 바라보는 문화적 변화가 필요합니다. 중요한 데이터를 다루는, 즉 데이터를 생성, 변경, 사용하며 일련의 방식으로 이동시키는 업무를 수행하는 직원의 경우 데이터를 올바르게 관리하는 데 있어 맡은 역할을 이해하고 책임감을 가져야 합니다.&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;또 다른 큰 문제는 바로 데이터의 빠른 확산입니다. 데이터는 시간이 지날수록 점점 더 급증하고 있습니다. 새로운 데이터는 대부분 비정형 데이터이거나 우리가 과거에 보거나 다루었던 데이터와 다릅니다. 이로 인해 기존 시스템과 데이터베이스에 부담이 가고 거버넌스에 대한 새로운 절차가 필요하며 추가 요구사항이 발생합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #545454; text-align: start;&quot;&gt;
&lt;div data-component=&quot;Section&quot; data-model=&quot;/korea/products/technology-platform/master-data-governance/what-is-data-governance/_jcr_content/par/section_1477457077.model.json&quot; data-isdynamicheadline=&quot;false&quot; data-isdynamicparagraph=&quot;false&quot; data-component-id=&quot;Section_11&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000; text-align: center;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;데이터 거버넌스 툴과 기술&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #3c3c3c;&quot;&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;데이터 거버넌스 프레임워크를 생성하는 데 추가적인 툴이 필요하지는 않습니다. 하지만 기술은 데이터를 수집, 관리, 보호하는 데 도움이 될 수 있습니다. 다음을 살펴보세요.&lt;/span&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;color: #3c3c3c;&quot;&gt;&lt;a style=&quot;color: #007db8;&quot; href=&quot;https://www.sap.com/korea/products/technology-platform/data-profiling-steward.html&quot; data-title=&quot;정보 관리자 애플리케이션&quot;&gt;정보 관리자 애플리케이션&lt;/a&gt;은&amp;nbsp;데이터 프로파일링과 기업의 데이터 거버넌스 정책의 성과를 모니터링할 수 있도록 지원합니다. 비즈니스 유닛 전반에서 정보 거버넌스 이니셔티브를&amp;nbsp;실행하고 데이터 검증을 통해 품질 기준을 실현하며 데이터 품질 프로세스 개선을 측정하기 쉽게 합니다.&lt;/li&gt;
&lt;li style=&quot;color: #3c3c3c;&quot;&gt;EMM(기업 메타데이터 관리)이라고도 불리는 메타데이터 관리&amp;nbsp;솔루션은 기업의 정보 자산을 범주화하고 일관되게 구성하므로 빅데이터 시대에 그 중요성이 점차 커지고 있습니다.&amp;nbsp;유지관리되는 데이터 자산의 정보는 유형, 태그, 소스, 날짜입니다.&lt;/li&gt;
&lt;li style=&quot;color: #3c3c3c;&quot;&gt;&lt;a style=&quot;color: #007db8;&quot; href=&quot;https://www.sap.com/korea/products/technology-platform/information-lifecycle-management.html&quot; data-title=&quot;정보 수명주기 및 콘텐츠 관리&quot;&gt;정보 수명주기 및 콘텐츠 관리&lt;/a&gt;&amp;nbsp;기술은 데이터 볼륨을 제어하고 자동화된 정보 아카이빙, 보존, 폐기 정책에 따르는 리스크를 관리합니다. 또한 콘텐츠 관리 전용 기능으로 문서를 디지털화하고 관련 콘텐츠를 트랜잭션 및 워크플로와 통합함으로써 비즈니스 프로세스를 합리화할 수 있습니다.&lt;/li&gt;
&lt;li style=&quot;color: #3c3c3c;&quot;&gt;증강 데이터 관리 또는 증강 데이터 통합은&amp;nbsp;&lt;a style=&quot;color: #007db8;&quot; href=&quot;https://www.sap.com/korea/products/artificial-intelligence/what-is-artificial-intelligence.html&quot; data-title=&quot;AI&quot;&gt;AI&lt;/a&gt;&amp;nbsp;(인공지능) 및&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #007db8;&quot; href=&quot;https://www.sap.com/korea/products/artificial-intelligence/what-is-machine-learning.html&quot; data-title=&quot;머신러닝&quot;&gt;머신러닝&lt;/a&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;같은 새로운 기술을 적용해 얻은 정보로 기존 기업 데이터를 개선합니다. 목표는 의사결정을 개선하고 일부 애플리케이션의 셀프 튜닝의 강화를 지원하는 것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #545454; text-align: start;&quot;&gt;
&lt;div data-component=&quot;Section&quot; data-model=&quot;/korea/products/technology-platform/master-data-governance/what-is-data-governance/_jcr_content/par/section.model.json&quot; data-isdynamicheadline=&quot;false&quot; data-isdynamicparagraph=&quot;false&quot; data-component-id=&quot;Section_12&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #000000; text-align: center;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;5가지 데이터 거버넌스 선진사례&lt;/h2&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #3c3c3c;&quot;&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;전문가들이 일반적으로 동의하는 데이터 거버넌스의 첫 5가지 '선진사례'가 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; color: #3c3c3c;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;큰 그림을 염두에 두고 작은 규모로 시작하라.&lt;/b&gt;&amp;nbsp;훌륭한 조언입니다. 아무런 준비 없이 시작하면(또 시행 중인 데이터 거버넌스 프로세스가 없다면) 모든 것을 새로 개척해야 합니다.&amp;nbsp;따라서 모든 노력을 쏟아붓기 전에 소규모로 시작해 제한된 방식으로 학습하고 역량을 개발하며 접근 방식을 검증해 아이디어와 이해한 내용을 테스트하는 등 신중을 기해야 합니다. 동시에 큰 그림을 염두에 두는 것이 중요합니다. 그렇지 않으면 자질구레한 부분에 휘말려 전체적인 목표에서 벗어나기 쉽습니다. 따라서 높은 차원의 프로젝트 목표(데이터 거버넌스 프로세스의 최종 형태)를 문서화하고 파일럿 테스트 영역으로 활용할 수 있도록 적정 수준에서 시작하며 이 '파일럿' 테스트를 통해 접근 방식을 검증하세요.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;임원 후원자를 임명하라.&amp;nbsp;&lt;/b&gt;여느 기업 간 프로젝트와 마찬가지로 데이터 전략을 주도할 임원 비즈니스 후원자를 확보하는 것이 중요합니다. 이들은 보다 폭넓게 적극적으로 조직에 전략을 옹호하고 전달합니다. 또한 후원자는 책임을 강화하고 원하는 데이터 사고방식을 모델링하며 비즈니스 유닛 간의 데이터 문제를 중재하는 일을 돕습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;비즈니스 케이스를 구축하라.&lt;/b&gt;&lt;span&gt;&amp;nbsp;데이터 거버넌스 시스템은 결코 비용 없이 얻을 수 없습니다. 프레임워크를 개발하거나 세부사항을 입력하는 데는 특별히 장비가 필요하지 않지만 리소스가 필요합니다. 특히 직원의 시간이라는 리소스가 많이 소요됩니다.&lt;br /&gt;&lt;br /&gt;따라서 이러한 프로젝트에 해당하는 비즈니스 케이스를 구축하는 것이 좋습니다. 비즈니스 케이스는 프로젝트에 대한 상세한 설명, 목표, 예상되는 이점, 진행 상황과 성공의 중요 단계와 평가(지표)에 관한 일정을 포함해야 합니다. 이러한 지표가 있어야 프로젝트 팀이 사전 결정된 일정과 중요 단계에 대한 진행 상황을 평가해 프로젝트가 순조롭게 진행될 수 있습니다. 비즈니스 케이스는 또 팀원들에게 이 프로젝트를 수행하는 이유와 이 프로젝트를 일정 내에 올바르게 완료하는 것이 조직에 왜 중요한지 상기시켜 줍니다.&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;올바른 지표를 개발하라.&amp;nbsp;&lt;/b&gt;&lt;/span&gt;평가는 꼭 필요하지만 더 많은 평가가 반드시 더 좋다고 할 수는 없습니다. 아무리 자동화한다고 해도 평가에는 시간과 노력이 필요합니다. 누군가는 결과를 살펴보고 해석해 시정 조치를 취해야 합니다. 너무 잦은 평가나 무의미한 평가는 역효과를 불러올 수 있습니다. 사용자, 운영자, 작업자는 평가가 중요하지 않은 경우와 주목하지 않는다면 의미 있는 평가를 놓칠 수 있는 경우를 빨리 파악해야 합니다. KPI(핵심성과지표)와 마찬가지로 관리 가능한 적정 수준(일반적으로 6~10회)의 유용하고 유의미한 평가가 시스템이 실제로 어떻게 기능하고 있으며 목표가 충족되고 있는지에 관해 인사이트를 제대로 제공하지 못하는 50회 또는 100회의 평가보다 훨씬 나을 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;소통하라.&amp;nbsp;&lt;/b&gt;대부분의 사람에게는 미지의 것에 대한 두려움 때문에 변화를 싫어하는 본성이 내재되어 있습니다. 이러한 두려움을 없애는 가장 좋은 방법이 바로 정보입니다. 새로운 프로세스와 절차에 영향을 받게 될 사람들에게 프로세스에 적극적으로 참여했는지와 상관없이 충분한 설명을 제공해야 합니다. 무엇을 왜 진행하는지 설명하세요. 이로 인해 직장 생활이 어떻게 변할지(변화는 미묘할 수 있습니다), 이러한 변화에 협조하고 지원하는 것이 왜 중요한지 이야기하세요. 새로운 절차를 계획하고 시행하면 가장 큰 영향을 받을 사람들과 대화하세요. 그 사람들이야말로 변화가 생산성에 미치는 영향, 변화의 불편을 덜어낼 방법, 더 나은 데이터를 제공하기 위해 프로세스를 개선할 방법을 알아보기에 가장 좋은 위치에 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;text-align: center;&quot;&gt;&lt;span&gt;관리 가능한 적정 수준(일반적으로 6~10회)의&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #0070f2;&quot;&gt;유용하고 유의미한&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;평가 시스템이 실제로 어떻게 기능하고 있으며&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;목표가 충족되고 있는지&lt;/span&gt;에 관해 인사이트를 제대로 제공하지 못하는 50회 또는 100회의 평가보다 훨씬 더 나을 수 있습니다.&lt;/span&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div data-component-name=&quot;TextStandard&quot; data-is-ssr-component=&quot;true&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div style=&quot;color: #3c3c3c;&quot;&gt;
&lt;p style=&quot;color: #3c3c3c;&quot; data-ke-size=&quot;size16&quot;&gt;데이터 거버넌스는 일회성 프로젝트가 아닌 지속적인 프로세스임을 기억하세요. 시스템을 설정하기 위한 사전 작업이 있지만 이러한 프로세스는 조직 내 일상의 한 부분이 될 것입니다. 그리고 프로세스 자체를 조직이 처리하는 데이터의 볼륨, 유형, 특성의 변화 측면에서 꾸준히 모니터링하고 재평가해야 합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>정보관리기술사</category>
      <category>거버넌스</category>
      <category>데이터 거버넌스</category>
      <category>데이터거버넌스</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/263</guid>
      <comments>https://developer0513.tistory.com/263#entry263comment</comments>
      <pubDate>Fri, 25 Aug 2023 10:15:35 +0900</pubDate>
    </item>
    <item>
      <title>요구사항명세서에 기술되어야 하는 항목</title>
      <link>https://developer0513.tistory.com/262</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;요구사항 명세서에 기술되어야 하는 주요 항목은 다음과 같습니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;decimal&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;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;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;li&gt;&lt;b&gt;비즈니스 규칙 및 제약조건:&lt;/b&gt; 프로세스나 비즈니스 규칙에 따른 요구사항을 기술합니다. 법적인 요구사항이나 업계 표준을 따르는 사항을 포함할 수 있습니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;요구사항 명세서는 프로젝트의 성공적인 진행을 위해 매우 중요한 문서이며, 개발자, 디자이너, 테스터, 관리자 등 프로젝트 관련자들이 협업하여 작성하고 검토해야 합니다.&lt;/p&gt;
&lt;h1 style=&quot;color: #000000; text-align: start;&quot;&gt;요구사항 명세서란 무엇이고 왜 중요할까?&lt;/h1&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;1. 들어가며&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&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; color: #666666;&quot;&gt;요구사항 명세서는 프로젝트의 성공과 실패를 좌우하는 매우 중요한 문서입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;하지만 많은 사람들이 요구사항 명세서의 개념과 중요성, 작성 방법 등에 대해 잘 모르거나 혼동하고 있습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&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; color: #666666;&quot;&gt;요구사항 명세서의 정의와 종류&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;요구사항 명세서의 중요성과 역할&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;요구사항 명세서 작성 원칙과 팁&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;요구사항 명세서 예시와 템플릿&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;2. 요구사항 명세서의 정의와 종류&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; data-citationid=&quot;ec730bb8-9159-3e4e-6dc5-735dd85ab9bc-25-group&quot;&gt;요구사항이란 프로젝트를 수행하기 위해 필요한 조건이나 기능을 의미합니다&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;예를 들어, &quot;웹 사이트에 로그인 기능을 추가한다&quot;라는 것은 웹 사이트 개발 프로젝트의 한 가지 요구사항입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; data-citationid=&quot;ec730bb8-9159-3e4e-6dc5-735dd85ab9bc-30-group&quot;&gt;명세란 어떤 것을 구체적으로 설명하거나 규정하는 것을 의미합니다&lt;/a&gt;&lt;a style=&quot;color: #333333;&quot; href=&quot;https://ko.wikipedia.org/wiki/%EB%A7%88%ED%81%AC%EB%8B%A4%EC%9A%B4&quot; data-citationid=&quot;ec730bb8-9159-3e4e-6dc5-735dd85ab9bc-30&quot;&gt;1&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;예를 들어, &quot;로그인 기능은 아이디와 비밀번호를 입력하고 확인 버튼을 누르면 로그인되도록 한다&quot;라는 것은 로그인 기능에 대한 명세입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; data-citationid=&quot;ec730bb8-9159-3e4e-6dc5-735dd85ab9bc-35-group&quot;&gt;따라서&amp;nbsp;요구사항 명세란 프로젝트의 요구사항들을 구체적으로 설명하거나 규정하는 것을 의미합니다&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;요구사항 명세서란 프로젝트의 모든 요구사항들을 체계적으로 정리하고 문서화한 것입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;예를 들어, &quot;웹 사이트 개발 프로젝트의 모든 기능들에 대한 상세 설명 및 규칙&quot;이라는 것은 웹 사이트 개발 프로젝트의 한 가지 요구사항 명세서입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;2.1. 요구사항 명세서의 종류&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; data-citationid=&quot;ec730bb8-9159-3e4e-6dc5-735dd85ab9bc-45-group&quot;&gt;요구사항 명세서는 크게 **&lt;b&gt;기능적 요구사항(Functional Requirement)&lt;/b&gt;**과 **&lt;b&gt;비기능적 요구사항(Non-functional Requirement)&lt;/b&gt;**으로 나눌 수 있습니다&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;2.1.1. 기능적 요구사항(Functional Requirement)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;기능적 요구사항은 프로젝트가 수행해야 할 기능들에 대한 설명입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;예를 들어, &quot;웹 사이트에서 회원가입, 로그인, 로그아웃 등의 기능을 제공한다&quot;라는 것은 웹 사이트 개발 프로젝트의 한 가지 기능적 요구사항입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;2.1.2. 비기능적 요구사항(Non-functional Requirement)&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;비기능적 요구사항은 프로젝트가 수행해야 할 기능들 외에 다른 조건들에 대한 설명입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;예를 들어, &quot;웹 사이트의 응답 시간은 3초 이내여야 한다&quot;라는 것은 웹 사이트 개발 프로젝트의 한 가지 비기능적 요구사항입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&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; color: #666666;&quot;&gt;&lt;b&gt;성능(Performance)&lt;/b&gt;: 프로젝트의 속도, 처리량, 응답 시간 등을 나타냅니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;신뢰성(Reliability)&lt;/b&gt;: 프로젝트의 안정성, 오류 발생 빈도, 복구 시간 등을 나타냅니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;가용성(Availability)&lt;/b&gt;: 프로젝트의 가동률, 접근성, 중단 시간 등을 나타냅니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;보안(Security)&lt;/b&gt;: 프로젝트의 보호 수준, 인증 방식, 암호화 기법 등을 나타냅니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;사용성(Usability)&lt;/b&gt;: 프로젝트의 사용 편리성, 학습 용이성, 만족도 등을 나타냅니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;3. 요구사항 명세서의 중요성과 역할&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;요구사항 명세서는 프로젝트의 성공과 실패를 좌우하는 매우 중요한 문서입니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&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; color: #666666;&quot;&gt;&lt;b&gt;프로젝트 범위(Scope) 정의&lt;/b&gt;: 요구사항 명세서는 프로젝트가 수행해야 할 작업들과 하지 않아도 되는 작업들을 구분하여 프로젝트 범위를 명확하게 정의합니다. 이렇게 하면 불필요한 작업이나 변경 요청을 줄일 수 있습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;프로젝트 계획(Plan) 수립&lt;/b&gt;: 요구사항 명세서는 프로젝트가 수행해야 할 작업들에 대한 우선 순위와 일정을 결정하는 데 도움이 됩니다. 이렇게 하면 효율적인 자원 배분과 위험 관리를 할 수 있습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;프로젝트 품질(Quality) 평가&lt;/b&gt;: 요구사항 명세서는 프로젝트가 충족해야 할 기준과 목표를 제시합니다. 이렇게 하면 테스트나 검증 과정에서 실제 결과와 기대 결과를 비교하고 평가할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;4. 요구사항 명세서 작성 원칙과 팁&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&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; color: #666666;&quot;&gt;&lt;b&gt;명확성(Clearness)&lt;/b&gt;: 요구사항은 모호하거나 추상적이지 않고 구체적이고 이해하기 쉬워야 합니다. 또한 하나의 요구사항에는 하나의 내용만 포함되어야 합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;일관성(Consistency)&lt;/b&gt;: 요구사항은 서로 모순되거나 중복되지 않아야 합니다. 또한 표현 방식이나 용어도 일관되게 사용해야 합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;완전성(Completeness)&lt;/b&gt;: 요구사항은 프로젝트의 모든 기능과 조건을 포함해야 합니다. 누락된 요구사항이 없도록 검토하고 확인해야 합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;검증 가능성(Verifiability)&lt;/b&gt;: 요구사항은 테스트나 검증할 수 있는 형태로 작성되어야 합니다. 즉, 측정 가능하거나 관찰 가능한 기준을 제시해야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&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; color: #666666;&quot;&gt;&lt;b&gt;요구사항 분류(Classification)&lt;/b&gt;: 요구사항을 기능적인 것과 비기능적인 것으로 구분하여 작성하면 가독성과 관리성이 높아집니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;요구사항 우선 순위(Priority)&lt;/b&gt;: 요구사항에 우선 순위를 부여하여 중요도와 긴급도를 나타내면 프로젝트 계획 수립에 도움이 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;5. 요구사항 명세서 예시&lt;/h2&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;746&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BXVBO/btssaQ3bGBC/BdtPYk3fJteZJAgU43YaM1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BXVBO/btssaQ3bGBC/BdtPYk3fJteZJAgU43YaM1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BXVBO/btssaQ3bGBC/BdtPYk3fJteZJAgU43YaM1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBXVBO%2FbtssaQ3bGBC%2FBdtPYk3fJteZJAgU43YaM1%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;1280&quot; height=&quot;746&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;746&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NRteE/btr2zmIaxsr/KXnSWVVOxqeSCiiuk0OKZk/img.png&quot; data-lightbox=&quot;lightbox&quot; data-alt=&quot;요구사항 명세서&quot;&gt;&lt;/span&gt;요구사항 명세서&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&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; color: #666666;&quot;&gt;&lt;b&gt;요구사항 ID&lt;/b&gt;: 요구사항을 식별할 수 있는 고유한 번호나 코드를 부여합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;이는 요구사항의 추적성과 관리성을 높이기 위해 필요합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;요구사항 구분&lt;/b&gt;: 요구사항을 기능적인 것과 비기능적인 것으로 구분하여 작성합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;기능 요구사항은 소프트웨어가 수행해야 할 기능을 나타내고, 비기능 요구사항은 성능, 보안, 사용성 등과 같은 품질 관련 요소를 나타냅니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;요청사항(기능)&lt;/b&gt;: 요구사항의 내용을 간략하게 표현합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;예를 들어 &amp;ldquo;로그인 기능&amp;rdquo;, &amp;ldquo;회원가입 기능&amp;rdquo; 등과 같이 작성합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;요청사항에 대한 설명&lt;/b&gt;: 요청사항(기능)에 대해 자세하게 설명합니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;예를 들어 &quot;로그인 기능: 사용자는 아이디와 비밀번호를 입력하여 로그인할 수 있다.&quot;와 같이 작성합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;중요도&lt;/b&gt;: 요구사항이 프로젝트의 목표와 얼마나 관련되어 있는지를 나타내며, 우선순위를 결정하는데 도움이 됩니다. 예를 들어, 필수적인 요구사항은 높은 중요도를 가지고, 부가적인 요구사항은 낮은 중요도를 가집니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;난이도&lt;/b&gt;: 난이도는 요구사항을 구현하기 위해 필요한 시간과 노력을 나타내며, 리소스 할당과 일정 계획에 영향을 줍니다. 예를 들어, 복잡하고 새로운 기능은 높은 난이도를 가지고, 간단하고 기존의 기능은 낮은 난이도를 가집니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;담당자&lt;/b&gt;: 해당 요구사항을 처리할 담당자의 이름을 적습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;요청자&lt;/b&gt;: 해당 요구사항을 제시한 고객이나 이해관계자의 이름이나 역할을 적습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;예를 들어 &amp;ldquo;고객&amp;rdquo;, &amp;ldquo;매니저&amp;rdquo;, &amp;ldquo;개발자&amp;rdquo; 등과 같이 작성합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;&lt;b&gt;수용 여부&lt;/b&gt;: 해당 요구사항이 프로젝트에 반영되었는지 여부를 적습니다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #333333;&quot;&gt;&lt;a style=&quot;color: #333333;&quot; data-citationid=&quot;d3161dcd-3b73-e485-d3ab-5bd65f552f65-31-group&quot;&gt;예를 들어 &amp;ldquo;O&amp;rdquo;, &amp;ldquo;X&amp;rdquo;, &amp;ldquo;보류&amp;rdquo; 등과 같이 작성합니다&lt;/a&gt;.&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;이번 포스팅에서는 요구사항 명세서에 대한 개념과 중요성, 작성 원칙과 팁 등을 소개해드렸습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc; color: #666666;&quot;&gt;요구사항 명세서는 프로젝트의 성공과 실패를 좌우하는 매우 중요한 문서이므로 신중하게 작성해야 합니다.&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>정보관리기술사</category>
      <category>요구사항명세서</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/262</guid>
      <comments>https://developer0513.tistory.com/262#entry262comment</comments>
      <pubDate>Thu, 24 Aug 2023 16:29:03 +0900</pubDate>
    </item>
    <item>
      <title>데이터베이스 병행제어 기법 및 필요성</title>
      <link>https://developer0513.tistory.com/261</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;데이터베이스 병행제어 기법은 여러 사용자가 동시에 데이터베이스에 접근하고 데이터를 수정할 때 데이터 일관성을 유지하기 위한 방법을 말합니다. 데이터베이스에서 동시에 여러 트랜잭션이 실행될 때, 이 트랜잭션들이 데이터에 접근하고 변경할 때 발생할 수 있는 문제들을 해결하기 위해 필요한 기법들이 포함됩니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;병행제어의 필요성은 다음과 같은 이유로 인해 나타납니다:&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-list-type=&quot;decimal&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;li&gt;&lt;b&gt;효율성&lt;/b&gt;: 병행제어는 동시에 많은 트랜잭션이 실행될 때도 효율적인 데이터베이스 처리를 보장해야 합니다. 이를 위해 경쟁 상황에서도 최대한 많은 트랜잭션을 병행 실행할 수 있는 방법을 제공합니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;일반적으로 데이터베이스 병행제어 기법은 여러 방법으로 구현될 수 있습니다. 대표적인 병행제어 기법으로는 2단계 잠금 프로토콜, 시리얼 가능성(Serializability) 검증, 타임스탬프(Timestamp) 순서 등이 있습니다. 이러한 기법들은 데이터베이스 시스템이 트랜잭션들을 효율적으로 관리하고 데이터의 일관성을 유지하는 데 도움을 줍니다.&lt;/p&gt;
&lt;h2 id=&quot;%EB%B3%91%ED%96%89%20%EC%A0%9C%EC%96%B4-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://gunjoon.tistory.com/99#%EB%B3%91%ED%96%89%20%EC%A0%9C%EC%96%B4-1&quot;&gt;병행 제어&lt;/a&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;DBMS는 여러 사용자가 동시에 데이터베이스를 이용할 수 있도록 병행 수행 기능을 제공한다. 병행 수행은 실제로 여러 트랜잭션이 차례로 번갈아 수행되는 인터리빙(interleaving) 방식으로 지원한다. 하지만 아무런 제어 없이 병행 수행을 할 경우 갱신 분실, 모순성, 연쇄 복귀 등의 문제가 발생할 수 있다. 때문에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;트랜잭션을 병행 수행 하면서도 정확한 수행 결과를 얻을 수 있도록 트랜잭션의 병행 수행을 제어하는 병행 제어(동시성 제어)가 필요하다.&lt;/b&gt;&lt;/p&gt;
&lt;h2 id=&quot;%EB%B3%91%ED%96%89%20%EC%A0%9C%EC%96%B4%20%EA%B8%B0%EB%B2%95-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://gunjoon.tistory.com/99#%EB%B3%91%ED%96%89%20%EC%A0%9C%EC%96%B4%20%EA%B8%B0%EB%B2%95-1&quot;&gt;병행 제어 기법&lt;/a&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;병행 제어의 핵심 목표는 트랜잭션을 번갈아 가면서 수행하면서도 트랜잭션을 순차적으로 실행하는 것과 같은 결과를 내는 것이다. 트랜잭션을 순차적으로 실행한 결과는 항상 정확하고 일관되기 때문이다. 가장 많이 사용하는 병행 제어 기법으로 로킹 기법을 많이 사용한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;로킹(locking) 기법은 병행 수행 되는 트랜잭션들이 동일한 데이터에 동시 접근되지 못하도록 lock과 unlock이라는 2개의 연산을 이용해 제어하는 기법이다. lock을 통해 데이터의 독점권을 가져오고 unlock를 통해 독점권을 반납한다. 한 트랜잭션이 데이터를 독점적으로 사용함으로써 다른 트랜잭션이 해당 데이터에 접근하지 못하도록 상호 배제(mutual exclusion)한다. 이러한 방식은 OS에서 공유 자원에 대한 스레드 동기화에 사용되는 뮤텍스와 세마포어의 방식과 매우 유사하다.&lt;/p&gt;
&lt;h2 id=&quot;%EB%A1%9C%ED%82%B9%20%EA%B7%9C%EC%95%BD-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://gunjoon.tistory.com/99#%EB%A1%9C%ED%82%B9%20%EA%B7%9C%EC%95%BD-1&quot;&gt;로킹 규약&lt;/a&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;로킹 기법을 사용하려면 모든 트랜잭션이 로킹 규약을 지켜야한다. 로킹 규약이란 트랜잭션이 데이터에 접근하기 전에 먼저 해당 데이터에 lock 연산을 실행해 독점권을 얻어야 한다는 규약이다. 데이터베이스에서 데이터에 접근하기 위한 연산은 read와 write이므로 이들 연산을 실행하기 전에 반드시 lock 연산을 실행해야 한다. lock 연산을 실행한 트랜잭션 만이 unlock 연산을 실행해 독점권을 반납할 수 있다. 데이터에 write 연산을 수행하기 전에는 반드시 한 트랜잭션만이 해당 데이터에 독점권을 가져야한다. 하지만 read 연산은 그렇지 않다. 여러 트랜잭션이 동시에 같은 데이터에 read 연산을 수행해도 문제가 발생하지 않는다. 데이터베이스는 write 연산에 비해 read 연산의 비중이 대략 90%를 차지한다. 따라서 여러 트랜잭션이 동시에 수행해도 상관없는 read 연산을 한 트랜잭션만이 독점권을 얻어 실행한다면 병행성과 처리 성능이 매우 떨어진다. 그래서 lock 연산을 아래와 같이 두 종류로 구분한다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;공용(shared) lock&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;트랜잭션이 A 데이터에 공용 lock 연산을 실행하면,&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;해당 데이터에 read 연산을 실행할 수 있지만 write 연산은 실행할 수 없다.&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;A 데이터에 공용 lock을 걸어도 다른 트랜잭션은 A 데이터에 공용 lock 연산을 실행할 수 있다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;A 데이터에 공용 lock이 하나라도 걸려있다면 전용 lock 연산을 실행할 수 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size20&quot;&gt;전용(exclusive) lock&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: left;&quot;&gt;트랜잭션이 A 데이터에 전용 lock 연산을 실행하면&lt;b&gt;&lt;span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;A&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;b&gt;&amp;nbsp;데이터에 read 연산과 write 연산을 모두 실행할 수 있다.&lt;/b&gt;&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;A 데이터에 전용 lock을 걸면 다른 트랜잭션은 A 데이터에 공용, 전용 lock 연산을 실행할 수 없다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;read 연산 실행 전에는 공용 lock을 write 연산 실행 전에는 전용 lock을 실행하면 병행성과 처리 성능을 올릴 수 있다. 하지만 로킹 규약만으로 병행 수행의 문제점을 온전히 해결할 수 없다. 따라서 2단계 로킹 규약(2 phase locking protocol)이 등장하게 되었다.&lt;/p&gt;
&lt;h2 id=&quot;2%EB%8B%A8%EA%B3%84%20%EB%A1%9C%ED%82%B9%20%EA%B7%9C%EC%95%BD-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://gunjoon.tistory.com/99#2%EB%8B%A8%EA%B3%84%20%EB%A1%9C%ED%82%B9%20%EA%B7%9C%EC%95%BD-1&quot;&gt;2단계 로킹 규약&lt;/a&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;모든 트랜잭션이 2단계 로킹 규약을 준수하면 트랜잭션을 병행 수행해도 트랜잭션을 순차적으로 수행한 것과 같은 결과를 낼 수 있다. 2단계 로킹 규약은 기본 로킹 규약에 더불어 lock과 unlock 연산을 2단계로 나누어 실행하는 규약이다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;확장 단계 : 트랜잭션이 lock 연산만 실행할 수 있고 unlock 연산은 실행할 수 없는 단계&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;축소 단계 : 트랜잭션이 unlock 연산만 실행할 수 있고 lock 연산은 실행할 수 없는 단계&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;트랜잭션이 처음에 실행하면 확장 단계로 들어가 lock 연산만 실행할 수 있다. 그러다가 unlock 연산을 수행하면 축소 단계로 들어가 그때부터는 unlock 연산만 실행할 수 있게 된다. 따라서 unlock 연산을 수행하기 전에 필요한 모든 lock 연산을 실행해야 한다.&lt;/p&gt;
&lt;h2 id=&quot;%EA%B5%90%EC%B0%A9%20%EC%83%81%ED%83%9C-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://gunjoon.tistory.com/99#%EA%B5%90%EC%B0%A9%20%EC%83%81%ED%83%9C-1&quot;&gt;교착 상태&lt;/a&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;2단계 로킹 규약을 적용하면 트랜잭션을 병행 수행해도 트랜잭션을 순차적으로 수행한 것과 같은 결과를 낼 수 있지만 교착 상태가 발생할 수 있다.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;교착 상태란 상대가 독점하고 있는 데이터에 unlock 연산이 실행되기를 서로 기다리면서 트랜잭션의 수행이 중단된 상태이다.&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;교착 상태에 빠진 트랜잭션들은 수행되지 못하고 상대방이 unlock 연산을 실행해주기를 한없이 기다리게 된다. 교착 상태는 처음부터 발생하지 않도록 예방하거나, 발생했을 때 빨리 탐지하여 필요한 조치를 취하는 방법으로 해결한다.&lt;/p&gt;
&lt;h2 id=&quot;%EB%A1%9C%ED%82%B9%20%EB%8B%A8%EC%9C%84-1&quot; style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://gunjoon.tistory.com/99#%EB%A1%9C%ED%82%B9%20%EB%8B%A8%EC%9C%84-1&quot;&gt;로킹 단위&lt;/a&gt;&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #353638; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;lock 연산을 실행하는 대상 데이터의 크기인 로킹 단위도 생각해야한다. lock 연산은 크게 전체 데이터베이스부터 작게는 속성에 이르기까지 다양한 크기의 데이터를 대상으로 실행할 수 있다. 이때 로킹 단위가 클수록 병행 제어가 쉽지만 병행성은 낮아지고 로킹 단위가 작을수록 병행 제어는 어렵지만 병행성은 높아진다. 그러므로 시스템에 따라 적절한 로킹 단위를 선택하는 것이 중요하다.&lt;/p&gt;</description>
      <category>정보관리기술사</category>
      <category>데이터베이스</category>
      <category>데이터베이스 병행제어</category>
      <category>병행제어</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/261</guid>
      <comments>https://developer0513.tistory.com/261#entry261comment</comments>
      <pubDate>Thu, 24 Aug 2023 16:20:24 +0900</pubDate>
    </item>
    <item>
      <title>노코드(no-code) 란</title>
      <link>https://developer0513.tistory.com/260</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;노코드(No-Code)란 프로그래밍 언어를 사용하지 않고도 소프트웨어나 애플리케이션을 개발하고 구축하는 접근 방식을 의미합니다. 노코드 플랫폼은 비전문 개발자나 비개발자도 간단한 인터페이스와 도구를 통해 웹 애플리케이션, 모바일 앱, 워크플로우, 데이터베이스 등을 만들 수 있게 해줍니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;노코드 플랫폼을 사용하면 프로그래밍 지식이나 복잡한 코딩 과정 없이도 아래와 같은 작업을 할 수 있습니다:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #24292f; text-align: start;&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;li&gt;앱 및 모바일 애플리케이션 제작&lt;/li&gt;
&lt;li&gt;인터랙티브한 웹 요소 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;노코드는 비전문가도 손쉽게 소프트웨어를 개발하고 배포할 수 있는 장점을 가지고 있지만, 복잡한 기능이나 고도의 커스터마이징이 필요한 프로젝트의 경우에는 제한적일 수 있습니다. 노코드를 사용할 때는 프로젝트의 요구 사항과 적합성을 고려하여 적절한 도구를 선택하는 것이 중요합니다.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;노코드는 코딩 경험이 전혀 없는 사람을 위한 개발 접근 방식입니다. 단순히 손쉬운 방법을 제공하는 것 이상으로 선언적 프로그래밍을 활용하여 사용자 입력을 기반으로 애플리케이션을 구축합니다. 즉, 노코드 개발을 사용하면 코딩을 완전히 건너뛰고 시스템에 필요한 것을 알리며, 시스템이 애플리케이션 자체를 빌드할 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #24292f; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;비즈니스에서 노코드 개발은 수동 코딩에 비해 많은 이점을 제공합니다.&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #000000; text-align: left;&quot;&gt;
&lt;div id=&quot;title-3be55e0686&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container/container_1136470037/container_copy_copy_/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;비즈니스 이해도 향상&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;
&lt;div id=&quot;text-f0830f4a44&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container/container_1136470037/container_copy_copy_/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노코드를 사용하면 비즈니스, 비즈니스 프로세스 및 비즈니스 사용자 경험 요구 사항을 누구보다 잘 파악하고 있는 이해 관계자가 이러한 요구 사항을 가장 효과적으로 처리하는 앱을 구축할 수 있습니다. 따라서 앱 기능이 개선되고 사용자 경험이 향상됩니다.&lt;/p&gt;
&lt;div id=&quot;container-e7e45731e4&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy_&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-86b264fb8b&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy_/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;비즈니스 프로세스 자동화&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-c16023d706&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy_/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반적인 코딩은 다수의 수동 작업에 의존합니다. 노코드 개발은 필수적이면서 시간 소모적인 이러한 책임을 간소화합니다. 이에 따라 더 빠른 개발과 증대된 생산성을 촉진하는 것은 물론 가시성을 개선하고 프로세스 자체를 추적할 수도 있습니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;
&lt;div id=&quot;container-599c7e69a8&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__578720056&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-41267d6800&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__578720056/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;애플리케이션 개발 가속화&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-04196d090b&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__578720056/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노코드는 새로운 애플리케이션을 제작할 때에 드는 시간을 크게 줄입니다. 주요 프로세스를 자동화하고 완전한 모듈식 기능을 제공하므로, 노코드 개발을 사용하여 몇 주 또는 며칠 만에 복잡한 엔터프라이즈 수준의 앱도 만들 수 있습니다. 간단한 앱은 몇 시간이면 충분합니다. 노코드 개발자는 기존 IT 앱 개발 팀의 작업을 기다리는 대신 자체 앱을 셀프 서비스로 처리할 수도 있습니다. 즉, 생산성을 증대하고 긴급한 요구에 더욱 민첩하게 대응할 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;
&lt;div id=&quot;container-642abcafd0&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__978418537&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-4d8f72acde&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__978418537/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;더 적은 리소스로 더 많은 작업 수행&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-6be12fa305&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__978418537/text_copy&quot;&gt;전문 개발자는 가치가 높은 작업에 기술과 시간을 집중할 수 있습니다. 노코드 사용자는 프로젝트에 착수할 수 있고 코딩 전문가는 &amp;lsquo;마무리&amp;rsquo; 작업을 수행하기 위해 선택적으로 참여할 수 있습니다. 여기에 비즈니스는 전체 개발 팀을 배치하는 대신 전문 애플리케이션을 제작하는 데 필요한 경우 개별&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.servicenow.com/kr/workflows/creator-workflows/what-is-a-citizen-developer.html&quot;&gt;일반 사용자 개발자&lt;/a&gt;에게 도구와 리소스를 제공할 수 있습니다. 이를 통해 사내 전문가는 중요한 다른 책임에 에너지를 쏟을 수 있습니다.&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;
&lt;div id=&quot;container-bca968372b&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__1445383001&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-30faf40224&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__1445383001/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;변경 간소화&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-f5dbe20687&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__1445383001/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플리케이션의 주요 측면을 수동으로 변경하는 것은 복잡하고 시간이 많이 소요됩니다. 노코드에서는 사용자가 직관적으로 통제하여 새로운 로직을 쉽게 구현할 수 있는 단순성을 제공합니다. 노코드 솔루션에서는 간단한 변경을 적용하기 위해 100줄의 코드를 작성하는 대신 단순한 풀다운 메뉴를 사용할 수 있습니다. 즉시 비즈니스와 고객에게 더 나은 서비스를 제공하도록 앱을 업데이트하거나 변경하여 접근성, 테스트, 위험 등에 영향을 줄 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;
&lt;div id=&quot;container-96bf921961&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__2120161864&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-888e60fd45&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__2120161864/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;엔터프라이즈 연결&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-975f13569c&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__2120161864/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기업의 모든 사람이 앱 개발을 사용할 수 있도록 지원하여 이전과는 다른 부서와 수준을 다양하게 연결할 수 있습니다. 비즈니스 요구를 가장 명확하게 파악하는 사람은 별도의 개발 팀에 자신의 비전을 설명하려고 하기보다는 해당 조건에 따라 앱을 빌드할 수 있습니다. 기업의 기타 영역과 관련된 다른 기능을 통합해야 하는 경우, 관련 이해 관계자에게 책임을 위임할 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;
&lt;div id=&quot;container-5ad74102dc&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__1266005910&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-f6edcb34fe&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__1266005910/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;사용자 경험 현대화&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-5e5db6ffa1&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__1266005910/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;효과적인 노코드 플랫폼은 최종 사용자에게 탁월한 경험을 제공하도록 설계된 최신 프레임워크를 통합합니다. 이러한 프레임워크 내에서 작업하면 특정 요구 사항을 충족하는 데 집중하며, 사용자가 완전히 현대적인 경험을 누릴 수 있다는 확신을 가질 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;
&lt;div id=&quot;container-b52c1a36dd&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__1627564322&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-e3c4924408&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__1627564322/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;앱 제공 확장&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-17f0f55f45&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__1627564322/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기업이 성장함에 따라 애플리케이션에 대한 요구도 커집니다. 노코드를 통해 비즈니스는 이러한 요구를 충족할 수 있으며 새로운 일반 사용자 개발자가 대규모로 새 앱 솔루션을 제작할 수 있습니다. 원하는 앱의 필요성과 기능을 파악하는 사람이 있다면 노코드 개발은 이를 가능하게 만드는 도구를 제공합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot;&gt;
&lt;div id=&quot;container-6348219311&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__402473114&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-a85fde4cb0&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__402473114/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;비용 절감&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-ccbef24e3d&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_2/container/container_copy_copy__402473114/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;생산성 증대, 효율성 향상, 비대한 개발 팀 인력의 축소를 고려하면 노코드 개발의 가장 큰 이점은 비용일 것입니다. 노코드는 전체 앱 구축 프로세스를 간소화하고 자율화하여, 기존 개발보다 더 적은 비용으로 더 나은 애플리케이션을 보다 빠르게 제공할 수 있도록 지원합니다.&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;노코드를 구현하는 이해 관계자&lt;/span&gt;&lt;/h2&gt;
&lt;div data-cmp-hook-accordion=&quot;panel&quot; aria-hidden=&quot;false&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;container-f6fd1b6113&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;container-a88955f138&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;text-cccf16a996&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노코드 개발은 거의 모든 비즈니스 측면을 변경할 수 있지만 특정한 세 가지 그룹에 가장 직접적인 영향을 미칩니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;container-d83810fe05&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container_copy_copy_&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-cc02107a66&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container_copy_copy_/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;일반 사용자 개발자&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-6b2ecef58d&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container_copy_copy_/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노코드는 일반 사용자 개발자에게 애플리케이션을 빌드할 수 있는 간단하고 직관적인 환경을 제공합니다. 가이드 템플릿과 사전 구축된 자산을 사용하여 기술 부문 외의 전문가도 필요한 애플리케이션을 설계할 수 있습니다. 여유 없이 바쁜 IT 또는 개발 팀이 참여하지 않고도 애플리케이션을 쉽게 재확인하여 중요한 변경 사항을 적용할 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;container-a7f17a67e9&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container_copy_copy__931251570&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-33bd7d0383&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container_copy_copy__931251570/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;IT 운영&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-421955fba7&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container_copy_copy__931251570/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노코드는 앱 개발 루프에서 IT를 차단하려는 것처럼 여겨질 수 있지만 실제로는 그렇지 않습니다. 실제로 노코드 개발은 IT에서 쉽게 상태 확인을 수행하고 개발 프로세스의 기준 사항을 시행할 수 있도록 지원합니다. IT는 기업 전체에서 생성된 앱을 배포하고 관리해야 합니다. 노코드 플랫폼의 특징인 복잡성이 줄어들기 때문에 IT는 앱의 성능과 앱에서 기여할 수 있는 운영상의 영향 또는 중단에 대한 엔드 투 엔드 가시성을 더 쉽게 확보할 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;container-13806daf4e&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container_copy_copy__517463105&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-36e939beb9&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container_copy_copy__517463105/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;전문 개발자&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-6f0cde5529&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1600449172758/container/container_copy_copy__517463105/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일반 사용자 개발자가 직접 앱을 구축할 수 있는 경우 풍부한 경험을 갖춘 전문 개발자라면 기존 앱 빌드에서 관심을 돌리고, 가치가 높은 구성요소를 빌드하는 데 더 많은 시간을 할애할 수 있습니다.&lt;/p&gt;
&lt;div id=&quot;-----&quot; style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot; data-cmp-hook-accordion=&quot;item&quot; data-cmp-expanded=&quot;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;노코드 개발을 발휘할 수 있는 영역&lt;/span&gt;&lt;/h2&gt;
&lt;div data-cmp-hook-accordion=&quot;panel&quot; aria-hidden=&quot;false&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;container-3a2a79f7c7&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;container-9a0aab662f&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;text-631c142b2e&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;노코드에서 제공되는 이점에 따라 다음과 같은 다양한 사용 사례에서 솔루션을 최적화합니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;container-0198309892&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy_&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-9a5894dc8e&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy_/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;스타트업&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-967ae1b0d5&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy_/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발 부서를 설립할 자원이나 수요가 없는 새로운 비즈니스는 한정된 자금으로 실행 가능한 제품을 생산하여 경쟁력을 유지할 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;container-74a992db73&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy__931251570&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-a3fb8a4165&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy__931251570/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;빠른 시장 출시 애플리케이션&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-733cf28a3f&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy__931251570/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;신흥 시장에 나타나는 격차에는 빠른 조치가 필요합니다. 새로운 상황을 활용하려는 기업은 노코드 개발을 사용하여 시장에서 신속히 자리를 잡을 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;container-f4a1d3f17c&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy__517463105&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-801c83ca72&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy__517463105/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;개념 증명&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-1dc87daee2&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy__517463105/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;애플리케이션마다 완벽히 다듬고 대중을 위해 준비할 필요는 없습니다. 특정 개념을 시연하거나 제품 시장에 맞는 적합성을 테스트하는 데 도움이 되는 프로토타입이 필요한 경우 노코드 개발은 빠르고 안정적인 솔루션입니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;container-7f2be9ec6f&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy__1114608537&quot;&gt;
&lt;div style=&quot;color: #000000;&quot;&gt;
&lt;div id=&quot;title-f8b40877e8&quot; data-cmp-name=&quot;cmp-title-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy__1114608537/title&quot;&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;지식 관리&lt;/h3&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;div id=&quot;text-b8ada73db4&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1620417915175/container_copy/container_copy_copy__1114608537/text_copy&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기업 직원은 대체로 다양한 역량, 기술 및 전문성을 발휘합니다. 그러한 지식을 회사 전체에 공유하십시오. 지식 관리를 위한 노코드를 활용하면 누구나 보유한 경험을 바탕으로 워크플로우와 비즈니스 프로세스를 최적화할 수 있습니다.&lt;/p&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;-----&quot; style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot; data-cmp-hook-accordion=&quot;item&quot; data-cmp-expanded=&quot;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;노코드로 빌드할 수 있는 애플리케이션 유형&lt;/span&gt;&lt;/h2&gt;
&lt;div data-cmp-hook-accordion=&quot;panel&quot; aria-hidden=&quot;false&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;container-00db67a034&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1599799176827/container&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;text-75bfdd0489&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1599799176827/container/text_copy_copy&quot;&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 style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;백오피스&lt;/b&gt;&lt;br /&gt;기존 워크플로우를 준수하도록 설계된 맞춤형 백오피스 애플리케이션으로 데이터 통찰력을 수집, 분석 및 적용합니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;웹 애플리케이션&lt;/b&gt;&lt;br /&gt;기능이 뛰어나면서 구축하기 쉬운 웹 애플리케이션으로 온라인 입지를 최적화하십시오. 노코드 개발을 통해 백엔드 시스템과 프런트엔드 시스템 간의 격차를 해소하고 맞춤형 브랜딩, 위젯, 체크아웃 기능 등을 구현할 수 있습니다.&lt;/li&gt;
&lt;li style=&quot;list-style-type: disc;&quot;&gt;&lt;b&gt;모바일 애플리케이션&lt;/b&gt;&lt;br /&gt;모바일 경험에 최적화된 강력한 애플리케이션을 사용자에게 제공합니다. 노코드 개발 플랫폼은 모바일에 특화된 도구와 구성요소를 갖추고 있으므로 사용자가 항상 소지할 앱을 제작할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div id=&quot;-----&quot; style=&quot;background-color: #ffffff; color: #293e40; text-align: left;&quot; data-cmp-hook-accordion=&quot;item&quot; data-cmp-expanded=&quot;&quot;&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;노코드는 전문 개발자에게 도전할 수 있는가?&lt;/span&gt;&lt;/h2&gt;
&lt;div data-cmp-hook-accordion=&quot;panel&quot; aria-hidden=&quot;false&quot;&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;div id=&quot;container-83f119783f&quot; data-cmp-name=&quot;cmp-container-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1611016086942/container_1021874496&quot;&gt;
&lt;div&gt;
&lt;div id=&quot;text-a07afd8c35&quot; data-cmp-name=&quot;cmp-text-v1&quot; data-cmp-path=&quot;/jcr:content/root/responsivegrid/container_1870649344/container_202232611_/accordion/item_1611016086942/container_1021874496/text_copy_copy&quot;&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;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;</description>
      <category>정보관리기술사</category>
      <category>no-code</category>
      <category>노코드</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/260</guid>
      <comments>https://developer0513.tistory.com/260#entry260comment</comments>
      <pubDate>Thu, 24 Aug 2023 15:54:41 +0900</pubDate>
    </item>
    <item>
      <title>spring boot soap web service</title>
      <link>https://developer0513.tistory.com/259</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;프로젝트가 바빠서 한동한 글을 포스팅하지 못했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘은 스프링 부트에서 SOAP를 사용하는 방법에 대해서 알아보겠습니다.&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;&lt;a href=&quot;https://spring.io/guides/gs/consuming-web-service/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://spring.io/guides/gs/consuming-web-service/&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1691040210748&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;Getting Started | Consuming a SOAP web service&quot; data-og-description=&quot;Spring WS uses Spring Framework&amp;rsquo;s OXM module, which has the Jaxb2Marshaller to serialize and deserialize XML requests, as the following example (from src/main/java/com/example/consumingwebservice/CountryConfiguration.java) shows: package com.example.cons&quot; data-og-host=&quot;spring.io&quot; data-og-source-url=&quot;https://spring.io/guides/gs/consuming-web-service/&quot; data-og-url=&quot;https://spring.io/guides/gs/consuming-web-service/&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/pML9U/hyTxSFXL73/GcN0PxO52bhXhnZ3AEeoG0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/b2s73y/hyTwd52Yjs/TJxQn2OMWGlUPW7TUukfP1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://spring.io/guides/gs/consuming-web-service/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://spring.io/guides/gs/consuming-web-service/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/pML9U/hyTxSFXL73/GcN0PxO52bhXhnZ3AEeoG0/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600,https://scrap.kakaocdn.net/dn/b2s73y/hyTwd52Yjs/TJxQn2OMWGlUPW7TUukfP1/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;Getting Started | Consuming a SOAP web service&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Spring WS uses Spring Framework&amp;rsquo;s OXM module, which has the Jaxb2Marshaller to serialize and deserialize XML requests, as the following example (from src/main/java/com/example/consumingwebservice/CountryConfiguration.java) shows: package com.example.cons&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;spring.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;가이드에서도 나와있듯이 java 1.8 이상, &lt;a style=&quot;background-color: #ffffff; color: #086dc3; text-align: left;&quot; href=&quot;https://gradle.org/install/&quot;&gt;Gradle 7.5+&lt;/a&gt; 이상 그리고 intellj에서 테스트 해보도록 하겠습니다.&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;span style=&quot;background-color: #ffffff; color: #000099; text-align: left;&quot;&gt;git clone&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;a href=&quot;https://github.com/spring-guides/gs-consuming-web-service.git&quot;&gt;https://github.com/spring-guides/gs-consuming-web-service.git&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1691040328596&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;object&quot; data-og-title=&quot;GitHub - spring-guides/gs-consuming-web-service: Consuming a SOAP web service :: Learn how to create a client that consumes a WS&quot; data-og-description=&quot;Consuming a SOAP web service :: Learn how to create a client that consumes a WSDL-based service - GitHub - spring-guides/gs-consuming-web-service: Consuming a SOAP web service :: Learn how to creat...&quot; data-og-host=&quot;github.com&quot; data-og-source-url=&quot;https://github.com/spring-guides/gs-consuming-web-service.git&quot; data-og-url=&quot;https://github.com/spring-guides/gs-consuming-web-service&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/dkTjQq/hyTxT5Wp8A/yrGVXfYnoRnzumKdRlKtqK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600&quot;&gt;&lt;a href=&quot;https://github.com/spring-guides/gs-consuming-web-service.git&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://github.com/spring-guides/gs-consuming-web-service.git&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/dkTjQq/hyTxT5Wp8A/yrGVXfYnoRnzumKdRlKtqK/img.png?width=1200&amp;amp;height=600&amp;amp;face=0_0_1200_600');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;GitHub - spring-guides/gs-consuming-web-service: Consuming a SOAP web service :: Learn how to create a client that consumes a WS&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;Consuming a SOAP web service :: Learn how to create a client that consumes a WSDL-based service - GitHub - spring-guides/gs-consuming-web-service: Consuming a SOAP web service :: Learn how to creat...&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;github.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://start.spring.io/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://start.spring.io/&lt;/a&gt; 로 가서 프로젝트 생성을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;dependency로 spring web service를 선택하고 제너레이트 해주었습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2023-08-03 143157.png&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;919&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8z50q/btspVNaroLO/9qdblvR40RB48aNAZGYJP0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8z50q/btspVNaroLO/9qdblvR40RB48aNAZGYJP0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8z50q/btspVNaroLO/9qdblvR40RB48aNAZGYJP0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8z50q%2FbtspVNaroLO%2F9qdblvR40RB48aNAZGYJP0%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;1916&quot; height=&quot;919&quot; data-filename=&quot;화면 캡처 2023-08-03 143157.png&quot; data-origin-width=&quot;1916&quot; data-origin-height=&quot;919&quot;/&gt;&lt;/span&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;제너레이트된 프젝트를 intellij에서 아래와 같이 불러왔습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;화면 캡처 2023-08-03 143310.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;992&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/boNbs8/btsp1kSM8Le/quBY4FuJEe5VBBu2SxAN70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/boNbs8/btsp1kSM8Le/quBY4FuJEe5VBBu2SxAN70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/boNbs8/btsp1kSM8Le/quBY4FuJEe5VBBu2SxAN70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FboNbs8%2Fbtsp1kSM8Le%2FquBY4FuJEe5VBBu2SxAN70%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;1920&quot; height=&quot;992&quot; data-filename=&quot;화면 캡처 2023-08-03 143310.png&quot; data-origin-width=&quot;1920&quot; data-origin-height=&quot;992&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;build.gradle 을 열어서 아래와 같이 수정합니다.&lt;/p&gt;
&lt;div style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;
&lt;pre class=&quot;gradle&quot;&gt;&lt;code&gt;sourceSets {
    main {
        java {
            srcDir 'src/main/java'
            srcDir 'build/generated-sources/jaxb' // xsd 파일을 통해서 역직렬화되어 생성되는 자바 클래스파일의 위치
        }
    }
}
// xsd 파일을 토대로 자바 클래스 파일을 생성한다
task genJaxb {
    ext.sourcesDir = &quot;${buildDir}/generated-sources/jaxb&quot;
    ext.schema = &quot;src/main/resources/countries.xsd&quot;

    outputs.dir sourcesDir

    doLast() {
        // 커스텀 Ant 태스크를 만든다.
        project.ant {
            taskdef name: &quot;xjc&quot;, classname: &quot;com.sun.tools.xjc.XJCTask&quot;,
                    classpath: configurations.jaxb.asPath
            mkdir(dir: sourcesDir)
            // 위에서 입력한 스키마 폴더와 소스디렉토리에 .xsd 파일을 토대로 XML을 자바 객체로 역직렬화(Unmarshalling) 한다.
            xjc(destdir: sourcesDir, schema: schema) {
                arg(value: &quot;-wsdl&quot;)
                produces(dir: sourcesDir, includes: &quot;**/*.java&quot;)
            }
        }
    }
}

compileJava.dependsOn genJaxb&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;div style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;
&lt;pre class=&quot;roboconf&quot;&gt;&lt;code&gt;dependencies {
   implementation 'org.springframework.boot:spring-boot-starter-web-services'
   testImplementation 'org.springframework.boot:spring-boot-starter-test'
   jaxb(&quot;org.glassfish.jaxb:jaxb-xjc&quot;)
   implementation 'com.sun.xml.bind:jaxb-core:4.0.2'
   implementation 'javax.xml.bind:jaxb-api:2.4.0-b180830.0359'
   implementation 'com.sun.xml.bind:jaxb-impl:4.0.2'
}&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;jaxb 디펜던시와 task genJaxb를 정의해주었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;src/main/resources/&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;countries.xsd 파일을 아래와 같이 생성해주었습니다.&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;background-color: #2b2b2b; color: #a9b7c6;&quot;&gt;
&lt;pre class=&quot;vim&quot;&gt;&lt;code&gt;&amp;lt;xs:schema xmlns:xs=&quot;http://www.w3.org/2001/XMLSchema&quot; xmlns:tns=&quot;http://spring.io/guides/gs-producing-web-service&quot;
           targetNamespace=&quot;http://spring.io/guides/gs-producing-web-service&quot; elementFormDefault=&quot;qualified&quot;&amp;gt;

    &amp;lt;xs:element name=&quot;getCountryRequest&quot;&amp;gt;
        &amp;lt;xs:complexType&amp;gt;
            &amp;lt;xs:sequence&amp;gt;
                &amp;lt;xs:element name=&quot;name&quot; type=&quot;xs:string&quot;/&amp;gt;
            &amp;lt;/xs:sequence&amp;gt;
        &amp;lt;/xs:complexType&amp;gt;
    &amp;lt;/xs:element&amp;gt;

    &amp;lt;xs:element name=&quot;getCountryResponse&quot;&amp;gt;
        &amp;lt;xs:complexType&amp;gt;
            &amp;lt;xs:sequence&amp;gt;
                &amp;lt;xs:element name=&quot;country&quot; type=&quot;tns:country&quot;/&amp;gt;
            &amp;lt;/xs:sequence&amp;gt;
        &amp;lt;/xs:complexType&amp;gt;
    &amp;lt;/xs:element&amp;gt;

    &amp;lt;xs:complexType name=&quot;country&quot;&amp;gt;
        &amp;lt;xs:sequence&amp;gt;
            &amp;lt;xs:element name=&quot;name&quot; type=&quot;xs:string&quot;/&amp;gt;
            &amp;lt;xs:element name=&quot;population&quot; type=&quot;xs:int&quot;/&amp;gt;
            &amp;lt;xs:element name=&quot;capital&quot; type=&quot;xs:string&quot;/&amp;gt;
            &amp;lt;xs:element name=&quot;currency&quot; type=&quot;tns:currency&quot;/&amp;gt;
        &amp;lt;/xs:sequence&amp;gt;
    &amp;lt;/xs:complexType&amp;gt;

    &amp;lt;xs:simpleType name=&quot;currency&quot;&amp;gt;
        &amp;lt;xs:restriction base=&quot;xs:string&quot;&amp;gt;
            &amp;lt;xs:enumeration value=&quot;GBP&quot;/&amp;gt;
            &amp;lt;xs:enumeration value=&quot;EUR&quot;/&amp;gt;
            &amp;lt;xs:enumeration value=&quot;PLN&quot;/&amp;gt;
        &amp;lt;/xs:restriction&amp;gt;
    &amp;lt;/xs:simpleType&amp;gt;
&amp;lt;/xs:schema&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;터미널로 가서 &lt;span style=&quot;background-color: #ffffff; color: #000099; text-align: start;&quot;&gt;./gradlew compileJava &lt;span style=&quot;color: #000000;&quot;&gt;명령으로 정상적으로 컴파일 되는지 확인합니다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000099; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;컴파일이 이상없이 되었다면 소스의 빌드경로에 &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000099; text-align: start;&quot;&gt;build/generated-sources &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000099; text-align: start;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;경로에 xsd(countries.xsd) 파일을 읽어서 제너레이트된 소스를 확인 하실 수 있습니다.&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;p&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span style=&quot;background-color: #ffffff;&quot;&gt;to-be continued...&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>SOAP</category>
      <category>spring boot sopa</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/259</guid>
      <comments>https://developer0513.tistory.com/259#entry259comment</comments>
      <pubDate>Thu, 3 Aug 2023 15:22:26 +0900</pubDate>
    </item>
    <item>
      <title>MyBatis 오류: Invalid bound statement (not found) xxxMapper 오류</title>
      <link>https://developer0513.tistory.com/255</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;org.apache.ibatis.binding.BindingException: Invalid bound statement (not found)&lt;span style=&quot;text-align: left;&quot;&gt;&amp;nbsp;에러의 해결 방법에 대해서 알아본다.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;mapper-인터페이스와-xml의-오타&quot; style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Mapper 인터페이스와 XML의 오타&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;기본적으로 Mapper 인터페이스와 XML에 오타가 있는지 확인해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&amp;lt;select&amp;gt;&amp;nbsp;문 등에 선언하는&amp;nbsp;id에 오타가 있을 수도 있고, 선언되어 있는&amp;nbsp;id가 Mapper 인터페이스의 메서드명과 다른지 확인해보자. 인터페이스의 이름과 XML 파일에 선언된 이름이 달라서 생길 수도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;아래와 같이 IDE에서 쉽게 발견하기 어려운 공백이 숨어있는 경우도 있다.&lt;/span&gt;&lt;/p&gt;
&lt;pre class=&quot;xml&quot; style=&quot;background-color: #212529; color: #212529; text-align: left;&quot;&gt;&lt;code&gt;&amp;lt;!-- id에 공백이 있다. --&amp;gt;
&amp;lt;select id=&quot;select &quot; resultTYpe=&quot;String&quot;&amp;gt;
    ...
&amp;lt;/select&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;mapper-locations&quot; style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;mapper-locations&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;쿼리가 작성되어 있는 mapper XML이 위치한 경로를&amp;nbsp;application.properties에 정의하지 않아서 또는 잘못 선언된 경우 발생할 수 있다. 정확한 경로는 프로젝트에 따라 변경해 주면 된다.&lt;/span&gt;&lt;/p&gt;
&lt;div style=&quot;color: #bcbcbc; text-align: left;&quot;&gt;
&lt;div&gt;
&lt;pre class=&quot;css&quot; style=&quot;background-color: #212529; color: #212529;&quot;&gt;&lt;code&gt;mybatis.mapper-locations:classpath:mapper/*.xml
&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;동일한-이름-다른-패키지-경로&quot; style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;동일한 이름, 다른 패키지 경로&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;Mapper의 이름이 같지만 패키지 이름이 달라서 인텔리제이나 이클립스에서 컴파일 오류가 발생하지 않는 경우다. 이런 경우 애플리케이션 구동 과정에서 오류가 발생하지 않으니 직접 확인해봐야 한다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 id=&quot;yaml-파일-오타&quot; style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;yaml 파일 오타&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;설정파일을&amp;nbsp;properties가 아닌&amp;nbsp;yaml&amp;nbsp;파일에 작성할 수도 있다. 계층 구조여서 가독성이 보다 더 좋은 장점을 갖는다. 다만 작성법에 익숙하지 않은 경우 들여 쓰기를 잘못 적용할 수 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;예를 들어, 최상단에 선언된&amp;nbsp;spring&amp;nbsp;하위에 위치하는 것이 아니라 최상단에&amp;nbsp;mybatis가 위치해야 한다. 설정 파일 내에서 잘못된 들여 쓰기로 다른 설정값이 정상적으로 읽히지 않을 수 있으므로 확인해보자.&lt;/span&gt;&lt;/p&gt;
&lt;h2 id=&quot;datasource-configuration&quot; style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DataSource Configuration&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;DataSource를 설정하는 Configuration 클래스를 점검할 필요가 있다.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;SessionFactory가 설정된 경우&amp;nbsp;setMapperLocations&amp;nbsp;메서드 등으로 Mapper XML의 위치를 선언할 텐데, 의도한 대로 잘 설정되어 있는지 확인해보자.&amp;nbsp;@MapperScan이 선언된 경우에는 Mapper 인터페이스가 있는 위치와 일치한지 확인해보자.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #bcbcbc; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;출처 :&lt;/span&gt; &lt;a href=&quot;https://madplay.github.io/post/mybatis-invalid-bound-statement-not-found-error&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://madplay.github.io/post/mybatis-invalid-bound-statement-not-found-error&lt;/a&gt;&lt;/p&gt;</description>
      <category>Mybatis</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/255</guid>
      <comments>https://developer0513.tistory.com/255#entry255comment</comments>
      <pubDate>Wed, 19 Apr 2023 14:29:57 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 클래스 개념</title>
      <link>https://developer0513.tistory.com/254</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;Python Classes/Objects&lt;br&gt;&lt;br&gt;Python is an object oriented programming language.&lt;br&gt;&lt;br&gt;Almost everything in Python is an object, with its properties and methods.&lt;br&gt;&lt;br&gt;A Class is like an object constructor, or a &quot;blueprint&quot; for creating objects.&lt;br&gt;&lt;br&gt;Create a Class&lt;br&gt;To create a class, use the keyword class:&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1210&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7fUFL/btsaROIL4Pj/EVinJSSGajj8bPWx2N8U41/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7fUFL/btsaROIL4Pj/EVinJSSGajj8bPWx2N8U41/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7fUFL/btsaROIL4Pj/EVinJSSGajj8bPWx2N8U41/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7fUFL%2FbtsaROIL4Pj%2FEVinJSSGajj8bPWx2N8U41%2Fimg.jpg&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;828&quot; height=&quot;1210&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1210&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;Create Object&lt;br&gt;Now we can use the class named FooClass to create objects:&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;761&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cbTVmD/btsaJVB7xp1/EycghALwcNh83plzDEACW0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cbTVmD/btsaJVB7xp1/EycghALwcNh83plzDEACW0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cbTVmD/btsaJVB7xp1/EycghALwcNh83plzDEACW0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcbTVmD%2FbtsaJVB7xp1%2FEycghALwcNh83plzDEACW0%2Fimg.jpg&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;828&quot; height=&quot;761&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;761&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;The __init__() Function&lt;br&gt;The examples above are classes and objects in their simplest form, and are not really useful in real life applications.&lt;br&gt;&lt;br&gt;To understand the meaning of classes we have to understand the built-in __init__() function.&lt;br&gt;&lt;br&gt;All classes have a function called __init__(), which is always executed when the class is being initiated.&lt;br&gt;&lt;br&gt;Use the __init__() function to assign values to object properties, or other operations that are necessary to do when the object is being created:&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;729&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bH8WWh/btsaV4X63Vj/ehAI1Ylssnh0KJTPn4Z5A0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bH8WWh/btsaV4X63Vj/ehAI1Ylssnh0KJTPn4Z5A0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bH8WWh/btsaV4X63Vj/ehAI1Ylssnh0KJTPn4Z5A0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbH8WWh%2FbtsaV4X63Vj%2FehAI1Ylssnh0KJTPn4Z5A0%2Fimg.jpg&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;828&quot; height=&quot;729&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;729&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;* reference and super thanks : w3schools.com&lt;/p&gt;</description>
      <category>파이썬</category>
      <category>class</category>
      <category>object</category>
      <category>python class</category>
      <category>파이썬 클래스</category>
      <category>파이썬 클래스 오브젝트</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/254</guid>
      <comments>https://developer0513.tistory.com/254#entry254comment</comments>
      <pubDate>Mon, 17 Apr 2023 20:11:14 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 detetime 모듈 개념</title>
      <link>https://developer0513.tistory.com/253</link>
      <description>&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Python Dates&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;A date in Python is not a data type of its own, but we can import a module named&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;datetime&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to work with dates as date objects.&lt;/span&gt;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Date Output&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;When we execute the code from the example above the result will be:2023-04-16 16:12:06.572136&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The date contains year, month, day, hour, minute, second, and microsecond.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;datetime&lt;span&gt;&amp;nbsp;&lt;/span&gt;module has many methods to return information about the date object.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Here are a few examples, you will learn more about them later in this chapter:&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;Creating Date Objects&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;To create a date, we can use the&lt;span&gt;&amp;nbsp;&lt;/span&gt;datetime()&lt;span&gt;&amp;nbsp;&lt;/span&gt;class (constructor) of the&lt;span&gt;&amp;nbsp;&lt;/span&gt;datetime&lt;span&gt;&amp;nbsp;&lt;/span&gt;module.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;datetime()&lt;span&gt;&amp;nbsp;&lt;/span&gt;class requires three parameters to create a date: year, month, day.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;he&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;datetime()&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;class also takes parameters for time and timezone (hour, minute, second, microsecond, tzone), but they are optional, and has a default value of&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;0&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;, (&lt;/span&gt;None&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;for timezone).&lt;/span&gt;&lt;/p&gt;
&lt;h2 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;The strftime() Method&lt;/h2&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The&lt;span&gt;&amp;nbsp;&lt;/span&gt;datetime&lt;span&gt;&amp;nbsp;&lt;/span&gt;object has a method for formatting date objects into readable strings.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The method is called&lt;span&gt;&amp;nbsp;&lt;/span&gt;strftime(), and takes one parameter,&lt;span&gt;&amp;nbsp;&lt;/span&gt;format, to specify the format of the returned string:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;스크린샷 2023-04-16 오후 4.19.30.png&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bf1RjF/btsaESwWc3f/FvjlOG5qb9kACklfpMFhhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bf1RjF/btsaESwWc3f/FvjlOG5qb9kACklfpMFhhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bf1RjF/btsaESwWc3f/FvjlOG5qb9kACklfpMFhhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbf1RjF%2FbtsaESwWc3f%2FFvjlOG5qb9kACklfpMFhhK%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;2140&quot; height=&quot;1309&quot; data-filename=&quot;스크린샷 2023-04-16 오후 4.19.30.png&quot; data-origin-width=&quot;2140&quot; data-origin-height=&quot;1309&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;div style=&quot;background-color: #e7e9eb; color: #000000; text-align: start;&quot;&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>파이썬</category>
      <category>Python</category>
      <category>python datetime</category>
      <category>python datetime module</category>
      <category>파이썬 데이트타임</category>
      <category>파이썬 데이트타임 모듈</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/253</guid>
      <comments>https://developer0513.tistory.com/253#entry253comment</comments>
      <pubDate>Sun, 16 Apr 2023 16:27:07 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 모듈의 개념</title>
      <link>https://developer0513.tistory.com/252</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;What is a Module?&lt;br&gt;Consider a module to be the same as a code library.&lt;br&gt;&lt;br&gt;A file containing a set of functions you want to include in your application.&lt;br&gt;&lt;br&gt;Create a Module&lt;br&gt;To create a module just save the code you want in a file with the file extension .py:&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1001&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/l0eBz/btsafQ8TKCF/cnOQEVyue1q8hQuxKGgup1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/l0eBz/btsafQ8TKCF/cnOQEVyue1q8hQuxKGgup1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/l0eBz/btsafQ8TKCF/cnOQEVyue1q8hQuxKGgup1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl0eBz%2FbtsafQ8TKCF%2FcnOQEVyue1q8hQuxKGgup1%2Fimg.jpg&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;828&quot; height=&quot;1001&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1001&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;&lt;br&gt;Use a Module&lt;br&gt;Now we can use the module we just created, by using the import statement:&lt;br&gt;&lt;br&gt;Note: When using a function from a module, use the syntax: module_name.function_name.&lt;br&gt;&lt;br&gt;Variables in Module&lt;br&gt;The module can contain functions, as already described, but also variables of all types (arrays, dictionaries, objects etc):&lt;br&gt;&lt;br&gt;Naming a Module&lt;br&gt;You can name the module file whatever you like, but it must have the file extension .py&lt;br&gt;&lt;br&gt;Re-naming a Module&lt;br&gt;You can create an alias when you import a module, by using the as keyword:&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccY2Bo/btsae5ZTA9s/9Fe5uTtk9BhiaKszN3LT8k/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccY2Bo/btsae5ZTA9s/9Fe5uTtk9BhiaKszN3LT8k/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccY2Bo/btsae5ZTA9s/9Fe5uTtk9BhiaKszN3LT8k/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccY2Bo%2Fbtsae5ZTA9s%2F9Fe5uTtk9BhiaKszN3LT8k%2Fimg.jpg&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;828&quot; height=&quot;603&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;Built-in Modules&lt;br&gt;There are several built-in modules in Python, which you can import whenever you like.&lt;br&gt;&lt;br&gt;Using the dir() Function&lt;br&gt;There is a built-in function to list all the function names (or variable names) in a module. The dir() function:&lt;br&gt;&lt;br&gt;Note: The dir() function can be used on all modules, also the ones you create yourself.&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1303&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bF0rJ8/btsaf8BLvi2/nBufQ6VIxpRVrm1ILKalt1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bF0rJ8/btsaf8BLvi2/nBufQ6VIxpRVrm1ILKalt1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bF0rJ8/btsaf8BLvi2/nBufQ6VIxpRVrm1ILKalt1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbF0rJ8%2Fbtsaf8BLvi2%2FnBufQ6VIxpRVrm1ILKalt1%2Fimg.jpg&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;828&quot; height=&quot;1303&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1303&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;&lt;br&gt;Import From Module&lt;br&gt;You can choose to import only parts from a module, by using the from keyword.&lt;br&gt;&lt;br&gt;Note: When importing using the from keyword, do not use the module name when referring to elements in the module. Example: person1[&quot;age&quot;], not mymodule.person1[&quot;age&quot;]&lt;br&gt;&lt;br&gt;* Reference and Super Thanks : w3schools.com&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>파이썬</category>
      <category>module</category>
      <category>Python</category>
      <category>python Module</category>
      <category>모듈</category>
      <category>파이썬모듈</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/252</guid>
      <comments>https://developer0513.tistory.com/252#entry252comment</comments>
      <pubDate>Fri, 14 Apr 2023 20:39:26 +0900</pubDate>
    </item>
    <item>
      <title>파이썬 상속 개념</title>
      <link>https://developer0513.tistory.com/251</link>
      <description>&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;Python Inheritance&lt;br&gt;&lt;br&gt;Inheritance allows us to define a class that inherits all the methods and properties from another class.&lt;br&gt;&lt;br&gt;Parent class is the class being inherited from, also called base class.&lt;br&gt;&lt;br&gt;Child class is the class that inherits from another class, also called derived class.&lt;br&gt;&lt;br&gt;Create a Parent Class&lt;br&gt;Any class can be a parent class, so the syntax is the same as creating any other class:&lt;br&gt;&lt;br&gt;Create a Child Class&lt;br&gt;To create a class that inherits the functionality from another class, send the parent class as a parameter when creating the child class:&lt;br&gt;&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1363&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KbtI5/btsafQ11NkH/XpSnf4NLUDnQfLKEwtPYt1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KbtI5/btsafQ11NkH/XpSnf4NLUDnQfLKEwtPYt1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KbtI5/btsafQ11NkH/XpSnf4NLUDnQfLKEwtPYt1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKbtI5%2FbtsafQ11NkH%2FXpSnf4NLUDnQfLKEwtPYt1%2Fimg.jpg&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;828&quot; height=&quot;1363&quot; data-origin-width=&quot;828&quot; data-origin-height=&quot;1363&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot; style=&quot;text-align: left;&quot;&gt;Now the Dog class has the same properties and methods as the Animal class.&lt;br&gt;&lt;br&gt;Use the Dog class to create an object, and then execute the prtNameAndTalk method:&lt;br&gt;&lt;br&gt;* Reference and super thanks : w3schools.com&lt;br&gt;&lt;br&gt;&lt;br&gt;&lt;/p&gt;</description>
      <category>파이썬</category>
      <category>inheritance</category>
      <category>상속</category>
      <category>파이썬상속</category>
      <author>somiyuralove</author>
      <guid isPermaLink="true">https://developer0513.tistory.com/251</guid>
      <comments>https://developer0513.tistory.com/251#entry251comment</comments>
      <pubDate>Fri, 14 Apr 2023 20:02:50 +0900</pubDate>
    </item>
  </channel>
</rss>