<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
<url>
    <loc>https://owl-dev.me/blog/602</loc>
    <lastmod>2025-07-16</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/8장.png</image:loc>
      <image:title>Object Chapter8 의존성 관리하기</image:title>
      <image:caption>Movie 클래스가 AmountDiscountPolicy와 PercentDiscountPolicy 클래스 둘 모두에 의존하도록 만드는 것은 Movie 의 전체적인 결합도를 높일 뿐만 아니라 새로운 할인 정책을 추가하기 어렵게 만들기 때문에 다른 방법을 찾아야 한다.                                                                                                          </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/553</loc>
    <lastmod>2025-07-16</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/7장.png</image:loc>
      <image:title>Object Chapter7 객체분해</image:title>
      <image:caption>장기 기억은 경험한 내용을 평생에 걸쳐 보관하는 저장소를 의미하며 장기 기억은 저장돼 있는 지식에 직접 접근하는 것이 불가능하고 정보를 보관할 수 있는 속도와 공간적인 측면 모두에서 제약을 받는다.                                                                                                                           </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/452</loc>
    <lastmod>2025-07-16</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/5장.png</image:loc>
      <image:title>Object Chapter5 책임 할당하기</image:title>
      <image:caption>DB 에 많이 의존해서 설계하는 개발자의 경우 데이터 중심 설계를 하게 되고 여러 문제점을 유발하게 된다.                                                                                                                                                                </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/502</loc>
    <lastmod>2025-07-16</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/6장.png</image:loc>
      <image:title>Object Chapter6 메시지와 인터페이스 </image:title>
      <image:caption>최소주의를 따르면서도 추상적인 인터페이스를 설계할 수 있는 가장 좋은 방법은 책임 주도 설계 방법을 따르는 것이며 책임 주도 설계 방법은 메시지를 먼저 선택함으로써 협력과는 무관한 오퍼레이션이 인터페이스에 스며드는 것을 방지하는 것이다.                                                                                                                    </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/652</loc>
    <lastmod>2025-07-16</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/9장.png</image:loc>
      <image:title>Object Chapter9 유연한 설계</image:title>
      <image:caption>Movie 를 정상적으로 컴파일하기 위해서는 DiscountPolicy 클래스가 필요하며 DiscountPolicy가 포함된 패키지 안의 어떤 클래스가 수정되더라도 패키지 저체가 재배포되어야 한다.                                                                                                                                   </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/22</loc>
    <lastmod>2025-05-19</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/Bucky_thumbnail.png</image:loc>
      <image:title>[B-Side] 사이드프로젝트 전쟁일지 — “8인의 명예를 걸고”</image:title>
      <image:caption>2021년 한해 에너지 상당부분을 쏟아부은 프로젝트 Bucky는 내가 원하는 컨셉의 스튜디오 위치, 가격, 인원, 색상 등을 한눈에 모아주는 사이트다.                                                                                                                                              </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/29</loc>
    <lastmod>2025-05-19</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/RaspberryPi.jpg</image:loc>
      <image:title>Nginx Load Balancing 적용기</image:title>
      <image:caption>DB 서버와 Web 서버 구역을 분할해서 구성했고 각 Web 서버에 Main Nginx 를 구축해서 각 Web 서버로 분할 해주도록 구성했다. DB 서버에 Main Nginx 를 구축해서 각 Web 서버로 분할 해 각 Web 서버로 분할 해 각 Web 서버로 분할 해주도록 구성했다.</image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/17</loc>
    <lastmod>2025-05-19</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/ssl_2.png</image:loc>
      <image:title>Nginx에서 TLS 설정으로 SSL 점수 A+ 받는 방법</image:title>
      <image:caption>Nginx 를 활용한 SSL 인증서 등록 방법 HTTPS는 HyperT Transfer Protocol Secure의 줄임말로 우리가 웹사이트를 이용할 때 사용하는 HTTP 프로토콜에 보안을 더한 버전 HTTP는 정보를 암호화하지 않고 주고받음 중간에서 가로채도 내용을 알 수 없음.</image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/702</loc>
    <lastmod>2025-07-17</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/10장.png</image:loc>
      <image:title>Object Chapter10 상속과 코드 재사용</image:title>
      <image:caption>코드를 재사용하는 전통적인 방법은 코드를 복사한 후 수정하는 것이지만 객체지향에서는 코드를 재사용하기 위해 새로운 클래스를 추가한다.                                                                                                                                                         </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/68</loc>
    <lastmod>2025-04-29</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/sql_vs_orm_final_reconstructed_v2.png</image:loc>
      <image:title>SQL vs ORM 2편 </image:title>
      <image:caption>SW 관점에서 풀어보자면 OOP 는 객체 상속 컬렉션 캡슐화 같은 개념을 사용하지만 RDB 는 테이블 행과 열 정규화 JOIN 등을 사용한다. 1편에서는 SQL 과 ORM 의 근본적인 차이에 대해 설명해보고 ORM 을 사용해서 DB 트랜잭션 처리 시 성능을 개선할 수 있는 방법에 대해 이야기 하려 한다.</image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/42</loc>
    <lastmod>2025-05-07</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/let's_encrypt(1).png</image:loc>
      <image:title>[Let&apos;s encrypt] 인증서 발급 및 갱신법</image:title>
      <image:caption>ZeroSSL Let&apos;s Encryptundefined undefined SSL (Secure Socket Layer) 서버와 사용자(브라우저) 간의 통신을 할 경우 정보를 암호화 하고 도중에 정보가 유출이 된다고 하더라도 정보의 내용을 보호할 수 있는 보안 인증 솔루션 기술로 해킹 기법 중 &apos;스니핑(sniffing)&apos; 기법을 막기 위한 도구이다.</image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/703</loc>
    <lastmod>2025-07-17</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/11장.png</image:loc>
      <image:title>Object Chapter11 합성과 유연한 설계</image:title>
      <image:caption>상속을 이용하면 자식 클래스의 정의에 부모 클래스의 이름을 덧붙이는 것만으로 부모 클래스의 코드를 재사용할 수 있지만 자식 클래스의 내부 구현에 대해 상세하게 알아야 하기 때문에 변경하기 쉽고 유연한 설계를 얻을 수 있다.                                                                                                                      </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/60</loc>
    <lastmod>2025-05-13</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/zoystick.jpg</image:loc>
      <image:title>조이스틱으로 서보모터 제어하기: 펌웨어 개발 실전 후기</image:title>
      <image:caption>임베디드 소프트웨어는 운영체제 없이 제어하는 &apos;펌웨어(Firmware)&apos; 와 주로 Linux O/S 에서 동작하는 &apos;커널 모듈 ( Kernel Module)&apos;, 디바이스 드라이버(Device Driver) 로 분류되는데, 교육 중에 프로젝트를 구상해야 하는 시기에, 평소 들고다니는 하드웨어 보관 상자에, 언젠가 써먹겠지 하고 쟁여두던 서보모터와, 조이스틱 하드웨어 모듈이 있어서, 교육 마지막 프로젝트 과제에서, 이들을 이용해 펌웨어 제작을 하게 되었다.</image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/852</loc>
    <lastmod>2025-07-19</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/14장.png</image:loc>
      <image:title>Object Chapter14 일관성 있는 협력</image:title>
      <image:caption>객체지향 패러다임의 장점은 설계를 재사용할 수 있다는 것이지만 재사용은 공짜로 얻어지지 않는다.                                                                                                                                                                     </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/952</loc>
    <lastmod>2025-09-06</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/SKT_Map_OCP.png</image:loc>
      <image:title>SKT MAP Open-Closed Principal Refactoring</image:title>
      <image:caption>SKT MAP 프로젝트는 복지 할인, 선택약정 할인, 결합 할인이라는 세 가지 혜택을 우선순위 기반으로 일관되게 계산하는 것이었는데 JPA 엔티티 제약과 외부 API 의존성이라는 복잡한 문제가 숨어 있었다.                                                                                                                         </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/903</loc>
    <lastmod>2025-09-07</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/SKT_Rule_Refactoring.png</image:loc>
      <image:title>SKT Project Rule 구조 아키텍처링</image:title>
      <image:caption>SKT 프로젝트에서 사용자가 기존 요금제에서 다른 요금제로 전환 가능한지 판단하기 위해 여러가지 조건을 판단하는 Rule에 의해 결정되는데 이 후 비즈니스 요구사항이 확장되며 특정 혜택 가입 가능 여부 판단 기능까지 추가로 개발하게 되었다.                                                                                                                 </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/25</loc>
    <lastmod>2025-04-01</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/9791165920371.jpg</image:loc>
      <image:title>클론 코딩으로 시작하는 Next.js </image:title>
      <image:caption>2021년 사이드 프로젝트로 Bucky 사이트를 개발하고 릴리스하는 경험을 하면서 Backend 뿐만 아니라 Frontend 영역까지 개발 범위를 넓혀 Full Stack 개발자가 되기 위한 발돋움을 했지만, 아직 Redux, css 에 대한 역량이 부족함을 깨닫고 해당 부분을 보완하기 위해 해당 책을 구매 후 공부한 후기를 기록해 보려 한다.</image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/902</loc>
    <lastmod>2025-07-22</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/15장.png</image:loc>
      <image:title>Object Chapter15 디자인 패턴과 프레임워크</image:title>
      <image:caption>소프트웨어 설계에서 반복적으로 발생하는 문제에 대해 적용할 수 있는 해결 방법을 디자인 패턴이라고 부르는데 디자인 패턴은 다양한 변경을 다루기 위해 반복적으로 재사용할 수 있는 설계의 묶음이다.                                                                                                                                   </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/37</loc>
    <lastmod>2025-03-23</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/해커톤.png</image:loc>
      <image:title>[한이음 ICT] 해커톤 공모전 도전기</image:title>
      <image:caption>임베디드 분야에도 자신은 있었지만, 다른 개발 분야에 대해 문제가 발생 했었을 때, 어떻게 이 부분을 해결해 나가지 하는 역량은 많이 부족했었던 것 같다고 생각하며 &apos;HomeCCTV 란 가정용 IP 카메라로 앱을 통해서 실시간 감시가 가능한 CCTV 를 의미하며 이 작품은 RaspberryPi, Server, App을 이용해서 휴대가 가능한 HomeCCTV를 만들었다.</image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/57</loc>
    <lastmod>2025-03-25</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/kyh_JPA_Spring2.png</image:loc>
      <image:title>[인프런] 실전! 스프링 부트와 JPA 활용</image:title>
      <image:caption>Dapper는 SQL 문을 사용해 DB 로부터 원하는 데이터를 가져와 객체와 맵핑하는 형태를 띄지만 Hibernate를 활용한 JPA는 SQL을 활용하기 보다는 Java 언어를 통해 데이터를 가져오는 형태를 </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/752</loc>
    <lastmod>2025-07-17</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/12장.png</image:loc>
      <image:title>Object Chapter12 다형성</image:title>
      <image:caption>상속은 타입 계층과 다형성을 구현할 수 있는 가장 일반적인 방법이었지만 최근의 언어들은 상속 이외에도 다형성을 구현할 수 있는 다양한 방법들을 제공하고 있어 상속의 중요성이 많이 낮아졌다고 할 수 있다.  다형성은 여러 타입을 대상으로 동작할 수 있는 방법이다.                                                                                                  </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/13</loc>
    <lastmod>2025-05-14</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/cookie.png</image:loc>
      <image:title>Nginx proxy_cookie_header not working</image:title>
      <image:caption>부엉이 개발자 사이트는 Front, Backend 서버를 활용한 시스템으로 서버는 단일 RaspberryPi4에서 돌아가지만 도메인은 각각 다르게 가져가도록 구성한 시스템이다.                                                                                                                                           </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/33</loc>
    <lastmod>2025-05-29</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/tempering_attack.jpeg</image:loc>
      <image:title>해킹 당해 본 적 있니? feat (파라미터 변조 해킹)</image:title>
      <image:caption>파라미터 변조 해킹은 웹 애플리케이션에서 클라이언트가 서버로 전송하는 요청 파라미터 값을 조작하여 원래 허용되지 않은 행위를 수행하거나 정보를 탈취하는 공격 방식으로 웹 요청의 값을 몰래 바꿔 시스템의 허점을 이용하는 해킹 기법 이다.                                                                                                                   </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/66</loc>
    <lastmod>2025-04-07</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/substation2.0.png</image:loc>
      <image:title>SQL vs ORM 1편 </image:title>
      <image:caption>대규모 반도체 공장에서 MES 업무를 하다 보면 데이터베이스에 쌓인 여러 데이터를 활용해서 원하는 형태로 데이터를 가져올 수 있어야 하는 역량이 중요하기 때문에 Raw SQL 과 ORM 으로 데이터를 가져오는 성능을 비교해 보려고 한다.                                                                                                               </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/802</loc>
    <lastmod>2025-07-18</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/13장.png</image:loc>
      <image:title>Object Chapter13 서브클래싱과 서브타이핑</image:title>
      <image:caption>상속의 첫번째 용도는 타입 계층을 구현하는 것이며 타입 계층 안에서 부모 클래스는 일반적인 개념을 구현하고 자식 클래스는 특수한 개념을 구현한다.                                                                                                                                                </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/311</loc>
    <lastmod>2025-04-23</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/PostgreSQL_toast.png</image:loc>
      <image:title>Docker 내 PostgreSQL 백업 및 복원 feat. TOAST 데이터</image:title>
      <image:caption>Record 최대 크기가 8 KB 인 PostgreSQL 에서 큰 데이터를 처리하기 위해 만든 기술인 TOAST는 2001년 PostgreSQL 7.1 버전에서 도입되었다.                                                                                                                                </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/1</loc>
    <lastmod>2025-07-20</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/Introduce(2).png</image:loc>
      <image:title>Introduce</image:title>
      <image:caption>2019년부터 2025년까지 3번의 리뉴얼을 거쳐서 출시하게된 개발 블로그에 대한 변천사를 기록해봤는데, 직장인이 주말에 짬내서 새로운 개발을 배운다는 것이 쉽지는 않았지만, &apos;프레임워크의 변화&apos; 및 &apos;아키텍처&apos;를 개선 해오면서 그 과정과 회고를 기록해봤는데, 직장인이 주말에 짬내서 새로운 개발을 배운다는 것이 쉽지는 않았지만, 개발 자체를 좋아하기에, 돌이켜보면 많은 성장을 할 수 있었습니다.</image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/76</loc>
    <lastmod>2025-04-23</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/kafka_thumbnail.png</image:loc>
      <image:title>Apache Kafka 중복 방지와 특정 시점 복구하기</image:title>
      <image:caption>Partition 과 Consumer Group 관계 컨슈머 그룹 (Consumer Group) 과 Consumer Group 관계 컨슈머 그룹 (Consumer Group) 은 하나 혹은 그 이상의 Consumer 들로부터 소비될 수 있고, 각각 다른 브로커에 분할되어서 관리된다.</image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/352</loc>
    <lastmod>2025-09-07</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/Postgreql_error.png</image:loc>
      <image:title>대규모 데이터 적재 중단? GS칼텍스 현장에서 찾아낸 PostgreSQL 장애 해결 노하우</image:title>
      <image:caption>정유·화학·발전 분야의 터빈 설비에서는 OPC 프로토콜이 표준으로 쓰이는데 이는 각 제조사가 만든 설비 간 데이터를 주고받는 통신 규약으로 주요 진단 데이터를 중앙 시스템으로 보내주는 역할을 한다.                                                                                                                               </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/74</loc>
    <lastmod>2025-05-18</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/nginx_upstream_module.png</image:loc>
      <image:title>Nginx Upstream Check Moudle 적용기</image:title>
      <image:caption>Nginx 유료버전에서는 백엔드 서버의 상태를 주기적으로 확인할 수 있도록 해주는 서드파티 모듈을 적용하면 헬스 체크, 자동 장애 감지, 서비스 안정성 향상 등의 기능을 사용할 수 있다.                                                                                                                               </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/1002</loc>
    <lastmod>2025-09-07</lastmod>
</url>
<url>
    <loc>https://owl-dev.me/blog/1052</loc>
    <lastmod>2025-10-26</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/Redis_kafka_hacking.png</image:loc>
      <image:title>Redis &amp; Kafka 해킹 사건 분석기 — 보안은 선택이 아니라 필수다</image:title>
      <image:caption>Redis 사태와 별도로 발견된 이상한 로그 중 하나는 Kafka 브로커 쪽으로 218MB 이상 크기의 비정상 패킷이 외부에서 지속적으로 들어오고 있었고 Kafka 네트워크 레이어는 패킷의 첫 4바이트를 payload size로 인식하는 부분이 1GB 이상으로 조작했다.                                                                                                 </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/1102</loc>
    <lastmod>2026-03-14</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/PostgreSQL_복제(Replication)_가이드.png</image:loc>
      <image:title>PostgreSQL 복제(Replication) 가이드</image:title>
      <image:caption>PostgreSQL은 2가지 방식의 복제를 지원하며 상황에 맞는 선택이 중요하다. 물리적 복제 데이터의 변경 사항을 추출하여 복제하는 방식 특징: Primary와 Standby가 비트 단위로 동일한 상태를 유지하는 방식 비교 항목 물리적 복제 데이터를 언제 확정짓느냐에 따라 서비스의 안정성과 성능이 달라진다.                                                                                  </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/1103</loc>
    <lastmod>2026-03-14</lastmod>
    <image:image>
      <image:loc>https://backend.owl-dev.me/images/PostgreSQL_복제(Replication)_가이드2.png</image:loc>
      <image:title>PostgreSQL 복제(Replication) 가이드2</image:title>
      <image:caption>Primary 서버는 변경되는 데이터를 WAL 파일로 기록하고 이를 Standby 서버로 전송할 준비를 해야 하며 Standby 서버는 Standby 서버가 복제용 계정으로 접근할 수 있도록 권한을 열어주어야 한다 Primary 서버는 Standby 서버가 복제용 계정으로 접근할 수 있도록 권한을 열어주어야 한다                                                                                  </image:caption>
    </image:image>
</url>
<url>
    <loc>https://owl-dev.me/blog/1104</loc>
    <lastmod>2026-03-14</lastmod>
</url>
</urlset>
