<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>primenumber_.log</title>
        <link>https://velog.io/</link>
        <description>이것저것 해보고 싶은 백엔드 개발자 primenumber_ 입니다.</description>
        <lastBuildDate>Wed, 03 May 2023 15:53:55 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <copyright>Copyright (C) 2019. primenumber_.log. All rights reserved.</copyright>
        <atom:link href="https://v2.velog.io/rss/primenumber_" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[SQLD 48회 응시 후기]]></title>
            <link>https://velog.io/@primenumber_/SQLD-48%ED%9A%8C-%EC%9D%91%EC%8B%9C-%ED%9B%84%EA%B8%B0</link>
            <guid>https://velog.io/@primenumber_/SQLD-48%ED%9A%8C-%EC%9D%91%EC%8B%9C-%ED%9B%84%EA%B8%B0</guid>
            <pubDate>Wed, 03 May 2023 15:53:55 GMT</pubDate>
            <description><![CDATA[<p>2023년 3월 19일, SQLD 48회 시험에 응시하였습니다.</p>
<p>시험 장소는 서울특별시 동작구에 위치한 성남고등학교에서 시험을 치뤘습니다.
신림선 &#39;서울지방병무청역&#39; 에서 도보로 이동 가능한 곳입니다.</p>
<p>집에서 가까운 곳으로 선택했는데, 주변에 주택가가 있어서 조용하고 시험 환경은 준수한 편입니다.</p>
<p><a href="https://place.map.kakao.com/8441234">https://place.map.kakao.com/8441234</a></p>
<h3 id="📌-sqld란">📌 SQLD란?</h3>
<p>SQL 개발자(SQLD*, SQL Developer)란 데이터베이스와 데이터 모델링에 대한 지식을 바탕으로 응용 소프트웨어를 개발하면서 데이터를 조작하고 추출하는데 있어서 정확하고 최적의 성능을 발휘하는 SQL을 작성할 수 있는 개발자를 말한다.</p>
<p>(출처 : <a href="https://www.dataq.or.kr/www/sub/a_04.do">https://www.dataq.or.kr/www/sub/a_04.do</a>)</p>
<p>과목은 &#39;데이터 모델링의 이해&#39;, &#39;SQL 기본 및 활용&#39; 총 2과목으로 구성되어 있으며, SQL 기본 및 활용 과목의 비중이 매우 높음(80%)을 알 수 있습니다. 하지만 과목별 과락이 존재하기 때문에 데이터 모델링의 이해 과목 역시 소홀히하면 안 되겠습니다.</p>
<p>문항 중 주관식 문항도 있는데, 2023.3.19일 기준, 주관식은 총 5문제가 나온걸로 기억합니다. 주관식도 기출문제 수준의 내용을 풀 수 있다면 크게 어렵지 않을 것으로 보입니다. (회차별로 난이도 상이)
<img src="https://velog.velcdn.com/images/primenumber_/post/cd6496e6-4fa1-4bad-b07d-a793ad5b3398/image.png" alt="">
(출처 : <a href="https://www.dataq.or.kr/www/sub/a_04.do">https://www.dataq.or.kr/www/sub/a_04.do</a>)</p>
<h3 id="📌-응시-계기">📌 응시 계기</h3>
<p>현재 2년차 백엔드 개발자로 일하면서 SQL에 관한 공부가 필요하다고 느꼈고, 자격증을 취득함으로써 공부를 지속적으로 하게 되는 발판을 마련하고 싶었습니다. 개발자는 끊임 없이 공부해야하니까요. ^^</p>
<h3 id="📌-공부-방향">📌 공부 방향</h3>
<p>흔히 말하는 CRUD (Create, Read, Update, Delete) 및 간단한 Join 문을 사용 가능한 수준의 지식을 가졌고 약 2주간 시험을 위해 준비했습니다.</p>
<p>주로 Maria DB 및 MySQL을 이용하다 보니, Oracle DB에서 사용하는 함수들이 다소 생소해서 익히는 시간을 가졌습니다. 더욱이 &#39;데이터 모델링의 이해&#39; 과목은 암기 위주의 내용이 많아 암기할 시간이 필요했습니다.</p>
<blockquote>
<p><strong>공부시간</strong>
평일 : 점심시간 및 퇴근 후 1<del>2시간
주말 : 4</del>5시간</p>
</blockquote>
<p>저는 아래와 같이 2권의 책으로 공부를 시작했는데, 많이들 추천하는 책은 <strong><em>SQL 자격검정 실전문제</em></strong> 입니다. 개인적으로 기본기가 부족하다고 판단해서 이론 내용도 병행하고 싶어서 <em><strong>2023 이기적 SQL 개발자 이론서+기출문제</strong></em> 도 병행해서 봤습니다.</p>
<h4 id="sql-자격검정-실전문제">SQL 자격검정 실전문제</h4>
<p><a href="https://product.kyobobook.co.kr/detail/S000001399867">https://product.kyobobook.co.kr/detail/S000001399867</a></p>
<h4 id="2023-이기적-sql-개발자-이론서기출문제">2023 이기적 SQL 개발자 이론서+기출문제</h4>
<p><a href="https://product.kyobobook.co.kr/detail/S000061583675">https://product.kyobobook.co.kr/detail/S000061583675</a></p>
<p>추가로 네이버 카페 <strong><em>데이터 전문가 포럼</em></strong> 에서도 많은 정보를 얻을 수 있어 유익했습니다. 데이터를 다루는 직군을 준비하시는 분들은 가입을 추천 드립니다.</p>
<p><em><strong>데이터 전문가 포럼</strong></em>
<a href="https://cafe.naver.com/sqlpd">https://cafe.naver.com/sqlpd</a></p>
<h3 id="📌-응시-결과">📌 응시 결과</h3>
<p>자랑할 정도로 높은 점수는 아니지만, 비교적 안전하게 합격했다는 생각이 들었습니다. 기출문제는 꼭! 풀어보고 시험에 응시하시길 권장드립니다. (유사하거나 동일한 문제가 꽤 나왔던 것으로 기억합니다.)</p>
<p><img src="https://velog.velcdn.com/images/primenumber_/post/f257ae20-f46a-4f6d-a687-60ac5c6c9572/image.png" alt=""></p>
<h3 id="📌-시험-총평">📌 시험 총평</h3>
<p>SQL에 대한 이해도가 높다면 어렵지 않게 느낄 수 있지만 비전공자가 처음 도전하기에 만만한 시험은 아니라는 생각이 들었습니다. 저 역시 비전공자 + 국비지원 학원을 거쳐 개발자가 되었지만, 백엔드 개발자로 진로를 선택하셨다면 SQL에 대한 이해는 필수입니다.</p>
<p>또한 저도 주관식이 출제된다는 사실에 대해 겁이 많았는데, 객관식에서 정확도를 높게 가져가면 충분히 합격할 수 있다는 생각이 들었습니다.</p>
]]></description>
        </item>
        <item>
            <title><![CDATA[MSA란 무엇인가?]]></title>
            <link>https://velog.io/@primenumber_/MSA%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80</link>
            <guid>https://velog.io/@primenumber_/MSA%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80</guid>
            <pubDate>Wed, 29 Mar 2023 14:25:53 GMT</pubDate>
            <description><![CDATA[<h3 id="📌-정의">📌 정의</h3>
<blockquote>
<p>작고 독립적이며 자율적으로 배포 가능한 서비스로 구성된 애플리케이션 아키텍처</p>
</blockquote>
<p>MSA란 MicroService Architecture의 줄인 말로 소프트웨어 아키텍처 디자인 패턴 중 하나입니다. 애플리케이션을 작은 독립적인 서비스 단위로 분할하고, 이러한 서비스 단위들을 조합하여 전체 애플리케이션을 구성하는 방식</p>
<p>각각의 서비스는 특정 비즈니스 기능을 수행하며 서로 다른 서비스와 API를 통해 통신합니다. </p>
<p>예를 들어 쇼핑몰 홈페이지를 MSA로 구현했다고 가정해보도록 합시다. 로그인 및 권한을 담당하는 서비스, 상품 주문을 담당하는 서비스, 상품 판매를 위해 상품을 업로드 하는 서비스 등 비즈니스 로직을 처리하는 각각의 서비스가 존재하고 A 서비스에서 B 서비스를 호출해야 하는 경우, API를 통해 통신합니다.</p>
<br>

<h3 id="📌-탄생배경">📌 탄생배경</h3>
<p><img src="https://velog.velcdn.com/images/primenumber_/post/db47b4de-4d66-4672-af0a-5d6a4524eb61/image.png" alt=""></p>
<h6 id="이미지-출처---httpswwwlgcnscomblogcns-tech36171">이미지 출처 - <a href="https://www.lgcns.com/blog/cns-tech/36171/">https://www.lgcns.com/blog/cns-tech/36171/</a></h6>
<p>MSA는 기업이나 조직의 비즈니스 요구사항이 급격히 변화하고 서비스의 빠른 개발과 배포, 확장성과 가용성을 보장하는 것이 중요해진 현대의 IT 환경에서 발전해왔습니다. </p>
<p>이전의 Monolithic Architecture에서는 애플리케이션 전체를 한 번에 빌드하고 배포하는 것이 일반적이었지만, 이러한 방식은 대규모 애플리케이션에서 많은 문제점을 유발했습니다.</p>
<p>MSA는 이러한 문제점을 극복하고자, 각각의 서비스 단위를 개별적으로 개발, 배포 및 관리함으로써 애플리케이션의 유연성, 확장성, 가용성을 높이는 것을 목표로 합니다. </p>
<p>이러한 아키텍처의 탄생 배경은 클라우드 컴퓨팅, 분산 시스템, DevOps 등의 기술의 발전과 함께 나타난 것으로 볼 수 있습니다.</p>
<p>그럼 Monolithic Architecture와 MicroService Architecture를 비교해보도록 하겠습니다.
<br></p>
<h3 id="📌-monolithic-vs-msa">📌 Monolithic VS MSA</h3>
<p><img src="https://velog.velcdn.com/images/primenumber_/post/25fdc378-91c0-4692-9ca8-ded93f385d6b/image.png" alt=""></p>
<h6 id="이미지-출처---httpskrtmaxsoftcominfostorytviewdoseq345">이미지 출처 - <a href="https://kr.tmaxsoft.com/info/storyTView.do?seq=345">https://kr.tmaxsoft.com/info/storyTView.do?seq=345</a></h6>
<br>

<table>
<thead>
<tr>
<th align="center">구분</th>
<th>Monolithic</th>
<th>MSA</th>
</tr>
</thead>
<tbody><tr>
<td align="center">구조</td>
<td>애플리케이션의 모든 구성 요소가 하나의 단일 프로세스에 포함</td>
<td>애플리케이션을 작고 독립적이며 자율적으로 배포 가능한 서비스로 분리</td>
</tr>
<tr>
<td align="center">확장성</td>
<td>전체 애플리케이션을 수평적으로 확장해야 하며 개별 구성 요소의 확장이 어려움</td>
<td>각 서비스를 독립적으로 확장할 수 있어 필요한 부분만 유연하게 확장할 수 있음</td>
</tr>
<tr>
<td align="center">유연성</td>
<td>모든 구성 요소가 긴밀하게 결합되어 있어 하나의 구성 요소를 변경하려면 전체 애플리케이션을 재배포해야함</td>
<td>각 서비스가 독립적이므로 필요한 서비스만 변경하고 재배포할 수 있음</td>
</tr>
<tr>
<td align="center">개발속도</td>
<td>전체 애플리케이션의 복잡성으로 인해 개발 및 테스트 속도가 느려질 수 있음</td>
<td>각 서비스를 독립적으로 개발 및 테스트할 수 있어 개발 속도와 생산성이 향상됨</td>
</tr>
<tr>
<td align="center">장애격리</td>
<td>하나의 구성 요소에서 발생한 장애가 전체 애플리케이션에 영향을 줄 수 있음</td>
<td>각 서비스가 독립적이므로 장애가 발생한 서비스의 영향이 제한적임</td>
</tr>
<tr>
<td align="center">기술스택</td>
<td>일반적으로 하나의 기술 스택을 사용하며, 새로운 기술 도입이 어려움</td>
<td>각 서비스마다 다른 기술 스택을 선택할 수 있어 기술적 유연성 높음</td>
</tr>
</tbody></table>
<br> 
<br> 
비록 MSA가 Monolithic Architecture를 개선하기 위해 탄생했고 기술적인 유연성이 뛰어나고 생산성이 향상되었으나 규모가 작은 프로젝트에도 MSA를 도입하게 되면 오히려 복잡도만 높이는 결과를 낳을 수 있습니다.

<p>아래에서는 MSA의 장점과 단점을 알아보도록 하겠습니다.
<br></p>
<h3 id="📌-msa-장점-및-단점">📌 MSA 장점 및 단점</h3>
<table>
<thead>
<tr>
<th align="center">구분</th>
<th>👍 장점</th>
<th>👎 단점</th>
</tr>
</thead>
<tbody><tr>
<td align="center">확장성</td>
<td>각 서비스를 독립적으로 확장할 수 있어, 유연한 확장성 제공</td>
<td>분산 시스템의 복잡성으로 인해 전반적인 시스템 관리 및 통합에 어려움이 있을 수 있음</td>
</tr>
<tr>
<td align="center">개발 및 배포 속도</td>
<td>독립적인 서비스 개발 및 배포로 인해 빠른 개발 및 배포 속도 제공</td>
<td>서비스 간의 통신 오버헤드가 증가할 수 있음</td>
</tr>
<tr>
<td align="center">기술 스택</td>
<td>각 서비스마다 다른 기술 스택을 선택할 수 있어, 기술적 유연성이 높음</td>
<td>데이터 일관성 유지가 어려울 수 있음</td>
</tr>
<tr>
<td align="center">장애 격리</td>
<td>각 서비스가 독립적이므로, 장애가 발생한 서비스의 영향이 제한적임</td>
<td>MSA를 구현하고 관리하는 데 필요한 DevOps 기술과 도구에 대한 요구가 증가</td>
</tr>
</tbody></table>
<br>
<br>
<br>

<h3 id="📌-msa-구현시-고려사항">📌 MSA 구현시 고려사항</h3>
<p>MSA를 도입하기 전에 현재의 프로젝트 규모, 개발 팀의 기술 역량, 인프라 및 운영 부서와의 협업 등을 고려해야 합니다. </p>
<p>초기 단계의 스타트업이나 작은 프로젝트에서는 모놀리식 아키텍처가 더 적합할 수 있으며, 시스템이 점점 커지면서 복잡도가 높아지는 경우에 MSA를 고려하는 것이 좋습니다.</p>
<p>실제로 Netflix, Amazon, eBay, Uber 등의 유수의 글로벌 기업에서는 MSA를 구현함으로써 빠르게 확장하고 변화하는 시장 요구에 대응할 수 있는 높은 유연성을 얻었습니다.
<br>
<br></p>
<h3 id="📌-결론">📌 결론</h3>
<p>프로젝트의 규모나 복잡도 등을 고려하여 MSA의 도입 여부를 결정해야 하며, 간단한 프로젝트에서는 모놀리식 아키텍처를 적용하는 것이 더 적절할 것입니다.</p>
<p>상황에 맞게 잘 판단하여 아키텍처 도입 여부를 결정하는 편이 좋겠습니다.</p>
]]></description>
        </item>
    </channel>
</rss>