<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>KIOR</title>
    <link>https://ko-o.tistory.com/</link>
    <description>N블로그에서 이사중~  
https://blog.naver.com/jooozip

KIOR의 IT 성장 일기</description>
    <language>ko</language>
    <pubDate>Thu, 9 Apr 2026 01:44:11 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>KO_O</managingEditor>
    <image>
      <title>KIOR</title>
      <url>https://tistory1.daumcdn.net/tistory/4925601/attach/3e2637e6844f42ccbfe84a1a3326deab</url>
      <link>https://ko-o.tistory.com</link>
    </image>
    <item>
      <title>케이뱅크 계좌 지급정지 이의제기 승인 후기(당근거래 편)</title>
      <link>https://ko-o.tistory.com/84</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;308&quot; data-origin-height=&quot;308&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dGtepq/dJMcaiW7FUe/ciHggKl2RjhVBBovKn66uK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dGtepq/dJMcaiW7FUe/ciHggKl2RjhVBBovKn66uK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dGtepq/dJMcaiW7FUe/ciHggKl2RjhVBBovKn66uK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdGtepq%2FdJMcaiW7FUe%2FciHggKl2RjhVBBovKn66uK%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;163&quot; height=&quot;163&quot; data-origin-width=&quot;308&quot; data-origin-height=&quot;308&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;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;정말... 다시는 겪고 싶지 않은 일&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;저와 같은 '불안핑'들에게 안정이 되기를 바라며&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;033&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/033.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/033.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결론부터 얘기하면 저는 이의제기가 승인되어 계좌가 해제되었습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;저의 사례를 공유드립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;&lt;b&gt;# 반갑지 않은 연락...&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2026년이 되어서 즐거운 마음으로 출근하여 올해의 계획을 세우고 있을때... 카톡과 문자가 왔습니다...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;date. 2026.01&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;678&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Pm3tR/dJMb99L21VJ/33lrfQMziczCt5G0XSIJW1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Pm3tR/dJMb99L21VJ/33lrfQMziczCt5G0XSIJW1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Pm3tR/dJMb99L21VJ/33lrfQMziczCt5G0XSIJW1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPm3tR%2FdJMb99L21VJ%2F33lrfQMziczCt5G0XSIJW1%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;624&quot; height=&quot;678&quot; data-origin-width=&quot;624&quot; data-origin-height=&quot;678&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;748&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/q5SpV/dJMcadARUwM/Z04KpHn7d9OgZ78yKcNo6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/q5SpV/dJMcadARUwM/Z04KpHn7d9OgZ78yKcNo6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/q5SpV/dJMcadARUwM/Z04KpHn7d9OgZ78yKcNo6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fq5SpV%2FdJMcadARUwM%2FZ04KpHn7d9OgZ78yKcNo6K%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;862&quot; height=&quot;748&quot; data-origin-width=&quot;862&quot; data-origin-height=&quot;748&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;td style=&quot;width: 33.3333%;&quot;&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;968&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjHOQC/dJMcadARUwQ/8jvj8v2KU25aCC05D1xy2K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjHOQC/dJMcadARUwQ/8jvj8v2KU25aCC05D1xy2K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjHOQC/dJMcadARUwQ/8jvj8v2KU25aCC05D1xy2K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjHOQC%2FdJMcadARUwQ%2F8jvj8v2KU25aCC05D1xy2K%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;1090&quot; height=&quot;968&quot; data-origin-width=&quot;1090&quot; data-origin-height=&quot;968&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;온라인으로 이의제기 신청은 연락 받은 영업일 기준 하루 뒤에 온더라구요!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다른 글에서도 법률 상담했던 기록에서도 이의제기는 빠르면 빠를 수록 좋다고하여&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;저는 e-mail과 Fax로 하는 것으로 마음을 먹고 진행하였습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;먼가 촉이 왔죠...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2025년 12월 말에 '   당근거래'가 문제가 되었을 것으로&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;우선, 와이프에게 상황을 공유했습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;당시 와이프에게 요청한 조치는 아래와 같습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;# 거래자가 문제가 있으니 거래중지 요청&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;# 관련 채팅자료 모두 촬영&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;# 거래자 프로필&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;# 거래자 연락처 및 사기 조회&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;# 나의 거래내역&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아내가 당근을 조치하는 동안 제출해야하는 서류를 준비했습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;# 이의제기신청서(자필작성)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;# 신분증 사본&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;# 객관적인 증빙자료&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;# 보인서명사실확인서 (가까운 주민센터)&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;# 이의제기신청서&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;다들 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;수기&lt;/b&gt;&lt;/span&gt;로 작성해야하고 먼가 잘 못쓰면 안될 것 같고 그런 마음일 것 같아요...&lt;br /&gt;저도 그래서 저보다 법률을 잘 아는 GPT에게 부탁해서 초안을 작성했습니다.&lt;br /&gt;&lt;br /&gt;나중에 많은 후기들을 보고 아래의 내용이 포함되면 좋다는 점을 알았습니다.&lt;br /&gt;( GPT 초안에 저는 대부분들어가 있었고 만약 이미 제출을 하셨다면 보완자료로 제출할 수 있습니다! )&lt;br /&gt;- &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;시간 순&lt;/b&gt;&lt;/span&gt;으로 상황 설명&lt;br /&gt;- 내가 진행한 거래는 피해자의 거래와 관련없는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;정당한 거래&lt;/b&gt;&lt;/span&gt;였다.&lt;br /&gt;- 나는 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;성실한 사회인&lt;/b&gt;&lt;/span&gt;으로써 관련 사건에 공모할 이유가 없다.&lt;br /&gt;- 나는 관련 사건에 파생된 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;선의의 피해자&lt;/b&gt;&lt;/span&gt;이다.&lt;br /&gt;- 관련하여 수사 협조가 필요하다면 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;적극적&lt;/b&gt;&lt;/span&gt;으로 협조하겠다&lt;br /&gt;- 이러한 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;사실관계&lt;/b&gt;&lt;/span&gt;를 고려하여 관련 조치를 해제 하기를 바란다.&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;# 객관적인 증빙자료&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;- 당근거래 채팅: 모든 내용을 스크린 샷하여 문서화&amp;nbsp;&lt;br /&gt;- 익시오 통화요약: 스크린 샷하여 문서화&lt;br /&gt;- 거래자: 인적사항(주민등록증 등)&lt;br /&gt;- &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;거래 사진 또는 영상&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;이것도 진행 과정에서 많은 후기를 찾으며 알게된 사실 입니다.&lt;br /&gt;금융기관은 사진이나 영상을 중요하게 생각한다고 합니다.&lt;br /&gt;저의 경우 고가의 물품 거래고 대리인이 나온다고 하여 찝찝하여 와이프와 배달책이 거래하는 장면을 사진으로 몰래 찍어둔 것이 있어서 첨부하였습니다.&lt;br /&gt;&lt;br /&gt;# CCTV&lt;br /&gt;프렌차이즈 카페에서 거래하여 거래장면이 있을 것으로 판단되어서 지인 경찰에게도 문의하여 볼 수&amp;nbsp; 있는지 확인하니 신고 후 가능하다하여 '112'신고하여 CCTV 연람을 시도했습니다...!&lt;br /&gt;&lt;br /&gt;근데... CCTV 못봅니다.&lt;br /&gt;경찰관님 안내로는 제가 피해를 받은 사실이 없고! (맞죠... 저는 정상거래라서 금전적.. 물질적... 손해가 없죠...)&lt;br /&gt;가장 중요한 사건번호가 없기 때문에 도움을 줄 수 없다는 것이었습니다!&lt;br /&gt;나중에 지금 피해를 입었다고 주장하는 피해자 분이 서면제출(사건 접수)를 하게 되어서 사건번호가 있을때 도움을 줄 수 있다는 것이 었습니다.&lt;br /&gt;&lt;br /&gt;제가 할 수 있는 최선은 카페 사장님에게 거래때 영상을 별도로 보관만 해달라는 요청을 했습니다.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;# 걱정 NoNO&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #000000;&quot;&gt;본인이 영상이나 사진이 없다고 걱정하지 마세요!&lt;br /&gt;많은 후기들에서도 사진이나 영상이 없어도 이의제기 받아드려진 상황이 많습니다!&lt;br /&gt;그리고 고객센터 안내에서도 없을 경우 채팅기록과 같은 것들로 대체될 수 있다고 합니다.&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f89009;&quot;&gt;&lt;b&gt;# 중간 정리&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;'케이뱅크'를 통해서 '계좌 중지' 및 사기와 연관된 거래 내용을 통보 받음.&lt;/li&gt;
&lt;li&gt;이의제기 서류 준비&lt;/li&gt;
&lt;li&gt;Fax 및 e-mail로 서류 제출&lt;/li&gt;
&lt;li&gt;고객센터 연락하여 정상적으로 서류 접수되었는지 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;# Fax 제출&lt;/b&gt;&lt;br /&gt;요즘 Fax를 잘 안쓰죠... 저도 그래서 이번 기회에 찾다가 사용했던 어플을 공유드립니다!&lt;br /&gt;(참고로 저는 Apple 유저 입니다.)&lt;br /&gt;&lt;br /&gt;AppStore에 '모바일 팩스'라고 찾아보면 주황배경 어플이 있습니다.&lt;br /&gt;해당 어플로 pdf로 된 서류를 제출했습니다!&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;# 고객센터&lt;/b&gt;&lt;br /&gt;너무 연락하여 고객센터 번호를 외웠습니다. 1522-1000 &amp;gt; 8번 &amp;gt; 1번&lt;br /&gt;저는 대부분 10-15분 정도 대기 후 연락이 가능했습니다.( 가장 오래 기다른건 50분? 딱 1번입니다. )&lt;br /&gt;&lt;br /&gt;상담사 분에게 계좌번호를 알려드리고 서류를 보냈는데 확인이 되는지 몇장이 전달되었는지 확인하면 접수는 완료되었습니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;&lt;b&gt;# 결론&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;&lt;/span&gt;저의 경우 이의제기 신청하고 승인되기 까지 (영업일 기준: 12일 &amp;gt; 공휴일 포함: 16일) 걸렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서류를 제출하고 서류가 관련부서에서 받았다고 연락온 것은 (영업일 기준: 9일 &amp;gt; 공휴일 포함: 11일) 걸렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 금융과 관련된 것이다 보니 '불안핑' 상태로 시간을 보냈습니다.( 중간중간 우편도 와요...)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 분들이 얘기하시죠... 나도 피해자인데 왜 이 부분을 내가 소명해야 하는가...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 당근페이, 번개페이 등이 있는거라고...  &lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;저는 월급날이 겹치지 않았지만... 공과금이나 자동이체때 걸렸던 분들 후기 보니... 정말... 어렵더라구요...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;혹시나 해서 보험 어플부터 미리 카드사에 연락해서 가상계좌 확인하고...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;케이뱅크 고객 상담사 분들에게 죄송하지만 저는 해결되는 날까지 매일 1번씩 연락드렸습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;거의... 출근해서 또는 점심먹고 이렇게 연락을 계속 했었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(처음 알았습니다. 1522 번호로 연락은 무제한이 아니라는 것을... 하하)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;케이뱅크 고객상담에 대해서 불만이 많은 글들이 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;겪은 저로써 할 수 있는 말은 case by case 입니다. 저는 대부분 친절한 상담과 동일한 가이드 내용을 받았습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;고객 상담사 선생님들을 이해해드려야 하는 부분은... 그 분들이 이 건을 해결할 수 있는 실무자 분들이 아닙니다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모나 확인 정도 가능하시고 관련 규정으로 처리 방식을 안내해주시는게 최선이라는 점 입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;# 이의제기 승인 후&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;저는 이의제기 승인 후 해당 계좌를 스스로 '거래 중지'하였습니다.&lt;br /&gt;다들 웬만하면 계좌를 삭제하는 것 보다는 중지하여 금융거래 기록을 보유하는게 좋다고 하더라구요.&lt;br /&gt;그리고 어차피 남아 있는 금액이 2개월 간 사용할 수 없기 때문에...&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;niniz&quot; data-emoticon-name=&quot;047&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/047.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/niniz/large/047.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 글을 찾아서 읽고 계신다면... 저와 같은 상황이겠죠?&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;와이프가 옆에서 계속 말했고 지나고 나서 생각드는 것은&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&quot;나는 잘 못한게 없다&quot;&lt;/b&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;억울하죠... 그냥 난 중고거래 하건데...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;하지만 항상 돌다리 두두리고 건너라고 조심하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그냥 액땜 하고 무슨 좋은 일이 나에게 일어나려고 하나&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;위안을 삼고 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;본 포스팅이 많은 분들에게 도움이되고 마음이 불안이 줄기를 바랍니다!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>KIOR/Idle</category>
      <category>계좌정지해제</category>
      <category>계좌지급정지</category>
      <category>당근거래</category>
      <category>보이스피싱</category>
      <category>이의제기</category>
      <category>이의제기승인</category>
      <category>중고거래</category>
      <category>지급정지이의제기</category>
      <category>케이뱅크</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/84</guid>
      <comments>https://ko-o.tistory.com/84#entry84comment</comments>
      <pubDate>Mon, 6 Apr 2026 11:15:26 +0900</pubDate>
    </item>
    <item>
      <title>JEUS JSP는 200, CSS는 404가 뜨는 이유(Too many open files)</title>
      <link>https://ko-o.tistory.com/83</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;그림1.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/UH8Qk/dJMcacvSigG/77648wSToSk578Eaz4imfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/UH8Qk/dJMcacvSigG/77648wSToSk578Eaz4imfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/UH8Qk/dJMcacvSigG/77648wSToSk578Eaz4imfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FUH8Qk%2FdJMcacvSigG%2F77648wSToSk578Eaz4imfk%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;416&quot; height=&quot;416&quot; data-filename=&quot;그림1.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;개발 목적으로 Webtob/JEUS 구성을 위한 분들을 위한 가이드 포스팅 :)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;TmaxSoft Engineer의 설치방식으로 진행되며, JEUS는 11년 연속 국내 1위 미들웨어입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;⭐️ Situation&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기동 이후에 잘 사용하다가 시간이 지나면서 어느 순간에 도달하면 아래와 같은 상황이 재현되었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JSP는 브라우저에서 정상으로 호출되었고, css 같은 정적 리소스만 '404(Not Found)'가 발생됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[확인 방법: 개발자 도구(F12) &amp;gt; 네트워크]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;&lt;b&gt;  Task&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JEUS 제품의 문제인지?&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아니라면 어떤식으로 접근하여 문제를 해결해서 운영에 지장이 없도록 하는 것이 목적.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;&lt;b&gt;  Action&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시간이 경과 이후에 '동적 리소스'는 정상 호출되고, '정적 리소스'는 404(Not Found) 된다는 점이 이상하여&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JVM HeapMemory의 문제 일 수도 있다고 생각이 들었습니다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;유사한 장애가 발생한 버그 리포팅을 연구소에서 찾기 시작했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리 또는 제품의 문제 건으로 패치가 제공된 것은 없었습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;연구소 Action을 확인 중 fd의 영향으로 유사한 문제가 발생한 사례를 발생했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바로 재현 환경을 구축하기로 했습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[단일 컨테이너 +&amp;nbsp; HTTP listener + Application] 설정하여 기동했습니다.&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;&quot;장애 유도 시나리오&quot; 아래와 같습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1. JSP 호출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2. curl으로 '정적 리소스'를 할당된 openfiles 수까지 호출.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3. JSP 호출&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;fileblock&quot; data-ke-align=&quot;alignCenter&quot;&gt;&lt;a href=&quot;https://blog.kakaocdn.net/dn/cs62cg/dJMcai3QANc/oGdQkjcdPWXkg6v6Wp0HW1/sleep.jsp?attach=1&amp;amp;knm=tfile.jsp&quot; class=&quot;&quot;&gt;
    &lt;div class=&quot;image&quot;&gt;&lt;/div&gt;
    &lt;div class=&quot;desc&quot;&gt;&lt;div class=&quot;filename&quot;&gt;&lt;span class=&quot;name&quot;&gt;sleep.jsp&lt;/span&gt;&lt;/div&gt;
&lt;div class=&quot;size&quot;&gt;0.00MB&lt;/div&gt;
&lt;/div&gt;
  &lt;/a&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1775192055590&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 정적 리소스(sleep.jsp 등)를 지속적으로 호출하여 FD를 소모시키는 스크립트
while true; do 
  curl -v &quot;http://admin:8080/sleep.jsp?ms=120000&quot;
  sleep 0.1
done&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;  JVM 할당된 최대 openfiles 확인.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;[jeus@admin:/home/jeus]$ jps -m &lt;br /&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;69&lt;/span&gt;&lt;/b&gt; DomainAdminServerBootstrapper -domain jeus_domain -u wasadmin -server adminServer &lt;br /&gt;137 Jps -m&lt;br /&gt;&amp;nbsp;[jeus@admin:/home/jeus]$ cat /proc/&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;69&lt;/span&gt;&lt;/b&gt;/limits | grep open &lt;br /&gt;Max open files &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1048576 1048576&lt;/b&gt;&lt;/span&gt; files&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;  JVM 사용중인 fd 확인.&lt;br /&gt;&lt;br /&gt;[jeus@admin:/home/jeus]$&amp;nbsp;ls&amp;nbsp;/proc/&lt;span style=&quot;color: #ee2323;&quot;&gt;69&lt;/span&gt;/fd&amp;nbsp;|&amp;nbsp;wc&amp;nbsp;-l&lt;br /&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;215&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;✅ Result&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WAS 동작 메커니즘을 이해하고 있고 LOG를 분석했다면 보다 쉽게 해결할 수 있는 문제입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffc1c8;&quot;&gt;첫번째 핵심은 두 &lt;b&gt;자원의 처리 방식&lt;/b&gt; 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;[동적 리소스]&lt;/b&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&gt;컴파일 완료: 첫 호출시 .java &amp;gt; .class로 컴파일 되어 ClassLoader 의해서 Metaspace에 적재.&lt;/li&gt;
&lt;li&gt;불필요 접근: load된 호출은 Disk의 jsp를 다시 열지 않습니다.&lt;br /&gt;메모리에 있는 서블릿 객체를 실행하여 결과물만 스트리밍할 뿐입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로 'open files' 꽉 찬 상태여도 새로운 소켓 연결(FD)만 맺을 수 있다면 실행 자체는 성공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;[정적 리소스]&lt;/b&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&gt;필수적 접근: 요청을 할때마다 서버 디스크의 실제 경로에서 파일을 Open하여 읽어야 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;결론적으로 'open files' 제한에 걸리면 파일을 열기 위한 File Descriptor를 할당받지 못하여 응답으로 파일을 찾지 못한 것으로 간주하여 I/O Error를 반환하게 됩니다. 최종적으로 브라우저에는 404 NotFound가 반환됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #c1bef9;&quot;&gt;두번쨰 핵심은 &lt;b&gt;로그&lt;/b&gt; 입니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당 로그를 조금만 보거나 search 해보면 아래의 결론을 얻습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&quot;&lt;b data-index-in-node=&quot;31&quot; data-path-to-node=&quot;0&quot;&gt;운영체제(OS) 레벨에서 프로세스가 열 수 있는 파일 서술자(File Descriptor)의 한도를 초과&quot;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해당의 경우 단순히 파일만 못 여는 게 아니라, 새로운 네트워크 접속을 받아들이는 &lt;b data-index-in-node=&quot;47&quot; data-path-to-node=&quot;11,0,0&quot;&gt;Acceptor 쓰레드 자체가 Selector를 생성하지 못해(Too many open files) 중단&lt;/b&gt;되었기 때문에 서비스 불능 상태에 빠진 것입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[2026.04.03 03:23:17:143][0] [serverA1-95] [NET-0013] The acceptor NonBlockingChannelAcceptor: admin:8080 is corrupted because it has exceeded the fail limit count[NonBlockingChannelAcceptor: admin:8080]. &lt;br /&gt;&amp;lt;&amp;lt;__Exception__&amp;gt;&amp;gt; &lt;br /&gt;java.io.IOException: &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Too many open files&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;at java.base/sun.nio.ch.ServerSocketChannelImpl.accept0(Native Method) &lt;br /&gt;at java.base/sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:533) &lt;br /&gt;at java.base/sun.nio.ch.ServerSocketChannelImpl.accept(ServerSocketChannelImpl.java:285) &lt;br /&gt;at jeus.io.impl.nio.NonBlockingChannelAcceptor.run(NonBlockingChannelAcceptor.java:118) &lt;br /&gt;at java.base/java.lang.Thread.run(Thread.java:834) &lt;br /&gt;&amp;lt;&amp;lt;__!Exception__&amp;gt;&amp;gt; &lt;br /&gt;&lt;br /&gt;[2026.04.03 03:23:17:155][0] [serverA1-95] [NET-0007] Replacing the acceptor NonBlockingChannelAcceptor: admin:8080 (attempt 1) failed because of the following exception. &lt;br /&gt;&amp;lt;&amp;lt;__Exception__&amp;gt;&amp;gt; &lt;br /&gt;java.io.IOException: &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Too many open files&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;at java.base/sun.nio.ch.EPoll.create(Native Method) &lt;br /&gt;at java.base/sun.nio.ch.EPollSelectorImpl.&amp;lt;init&amp;gt;(EPollSelectorImpl.java:79) &lt;br /&gt;at java.base/sun.nio.ch.EPollSelectorProvider.openSelector(EPollSelectorProvider.java:36) &lt;br /&gt;at java.base/java.nio.channels.Selector.open(Selector.java:295) &lt;br /&gt;at jeus.io.impl.nio.NonBlockingChannelAcceptor.replaceSelector(NonBlockingChannelAcceptor.java:203) &lt;br /&gt;at jeus.io.impl.nio.NonBlockingChannelAcceptor.acceptorCorrupted(NonBlockingChannelAcceptor.java:176) &lt;br /&gt;at jeus.io.impl.nio.NonBlockingChannelAcceptor.acceptFailed(NonBlockingChannelAcceptor.java:167) &lt;br /&gt;at jeus.io.impl.nio.NonBlockingChannelAcceptor.run(NonBlockingChannelAcceptor.java:134) &lt;br /&gt;at java.base/java.lang.Thread.run(Thread.java:834)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;&lt;b&gt;⚙️ Resolve&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  System ulimit Check&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;[jeus@admin:/home/jeus]$ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;ulimit -a&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;real-time non-blocking time (microseconds, -R) unlimited &lt;br /&gt;core file size (blocks, -c) 0 &lt;br /&gt;data seg size (kbytes, -d) unlimited &lt;br /&gt;scheduling priority (-e) 0 &lt;br /&gt;file size (blocks, -f) unlimited &lt;br /&gt;pending signals (-i) 31323 &lt;br /&gt;max locked memory (kbytes, -l) unlimited &lt;br /&gt;max memory size (kbytes, -m) unlimited &lt;br /&gt;open files (-n) &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;1024&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;pipe size (512 bytes, -p) 8 &lt;br /&gt;POSIX message queues (bytes, -q) 819200 &lt;br /&gt;real-time priority (-r) 0 &lt;br /&gt;stack size (kbytes, -s) 8192 c&lt;br /&gt;pu time (seconds, -t) unlimited &lt;br /&gt;max user processes (-u) unlimited &lt;br /&gt;virtual memory (kbytes, -v) unlimited &lt;br /&gt;file locks (-x) unlimited&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  Modify&amp;nbsp;settings.&lt;/b&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;# 설정 변경 (예: 65536)&lt;br /&gt;vi /etc/security/limits.conf&lt;br /&gt;&lt;br /&gt;# 내용 추가 (JEUS 설치계정 / ex:jeus)&lt;br /&gt;jeus soft nofile 65536 &lt;br /&gt;jeus hard nofile 65536&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  주의: JEUS7 &lt;/b&gt;이상은 반드시 'NodeManager'의 open files 값을 따라 Container 값이 할당 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(단, standalone 모드 기동인 startManagedServer 기동은 예외)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #dddddd;&quot;&gt;&lt;b&gt;개인적인 생각&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;인프라를 점점 공부하면 더 Low-level의 움직임을 궁금하게 됩니다...&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이러한 이유가 모든 Application이 OS위에서 한정된 자원을 나누어 쓰는 본질에서 벗어날 수 없기 때문인거 같습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Cloud Native 환경에서도 ulimit이나 sysctl 파라미터는 존재하기 때문에 이를 간과했을 때 발생하는 장애는 다른 장애들보다 훨씬 더 분석하기 까다롭게 다가옵니다... &lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;이런 점을 대응하기 위해서 계속 더 파고... 또 파고... 계속 파고... 정리하면 똑똑이가 되겠죠?  &lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;027&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/027.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/027.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>WAS/JEUS</category>
      <category>404Notfound</category>
      <category>acceptor</category>
      <category>filedescriptor</category>
      <category>jeus</category>
      <category>TooManyOpenFiles</category>
      <category>ulimit</category>
      <category>WAS장애분석</category>
      <category>미들웨어</category>
      <category>시스템자원</category>
      <category>트러블슈팅</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/83</guid>
      <comments>https://ko-o.tistory.com/83#entry83comment</comments>
      <pubDate>Fri, 3 Apr 2026 14:54:19 +0900</pubDate>
    </item>
    <item>
      <title>What does it mean? Cgroup</title>
      <link>https://ko-o.tistory.com/82</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B9NR8/dJMcahDSXIY/iEMWwGqO9IMjUjwyDepfL1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B9NR8/dJMcahDSXIY/iEMWwGqO9IMjUjwyDepfL1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B9NR8/dJMcahDSXIY/iEMWwGqO9IMjUjwyDepfL1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB9NR8%2FdJMcahDSXIY%2FiEMWwGqO9IMjUjwyDepfL1%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;428&quot; height=&quot;428&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;428&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;리눅스 시스템 운영이나 쿠버네티스를 공부하다 보면 반드시 마주하게 되는 개념이 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;바로 &lt;b&gt;Cgroup(Control Groups)&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;컨테이너 기술의 뿌리가 되는 이 핵심 기술을 실무 관점에서 정리해 보겠습니다.  &lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  What is Cgroup?&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Cgroup(Control Groups)&lt;/b&gt;은 프로세스들이 사용하는 시스템 자원(CPU, 메모리, 네트워크 대역폭, 디스크 I/O 등)을 그룹별로 제한하고 격리할 수 있는 리눅스 커널의 핵심 기능입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쉽게 말해, 특정 프로세스가 서버의 모든 자원을 독점하지 못하도록 &lt;b&gt;&quot;너는 CPU 20%만 써!&quot;&lt;/b&gt; 또는 &lt;b&gt;&quot;너는 메모리 1GB까지만 사용해!&quot;&lt;/b&gt;라고 울타리를 치는 작업이라고 이해하면 쉽습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;Namespace vs Cgroup&lt;/b&gt;&lt;br /&gt;- &lt;b&gt;Namespace:&lt;/b&gt; 프로세스가 보는 '환경'을 격리 (이름표, 네트워크, PID 등)&lt;br /&gt;- &lt;b&gt;Cgroup:&lt;/b&gt; 프로세스가 사용하는 '자원'을 제한 (CPU, Memory 등)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;✅ Cgroup의 주요 기능 4가지&lt;/h2&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 25%; background-color: #f8f9fa; font-weight: bold;&quot;&gt;기능&lt;/td&gt;
&lt;td style=&quot;width: 75%; background-color: #f8f9fa; font-weight: bold;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td&gt;&lt;b&gt;자원 제한 (Limiting)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;특정 그룹의 메모리 사용량이나 CPU 점유율을 제한합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td&gt;&lt;b&gt;우선순위 (Prioritization)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;특정 그룹에 더 많은 CPU 사이클이나 디스크 I/O 대역폭을 할당합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td&gt;&lt;b&gt;회계/측정 (Accounting)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;그룹 단위로 자원 소모량을 모니터링하고 통계를 산출합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td&gt;&lt;b&gt;제어 (Control)&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;그룹 내의 모든 프로세스를 한 번에 정지(Freeze)하거나 재시작합니다.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚙️ 실전! 리눅스에서 Cgroup 확인하기&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;리눅스 시스템에서 Cgroup은 파일 시스템 형태로 관리됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아래 경로에서 현재 시스템의 Cgroup 설정 내용을 직접 확인할 수 있습니다.&lt;/p&gt;
&lt;pre class=&quot;bash&quot; style=&quot;background-color: #282c34; color: #abb2bf; padding: 15px; border-radius: 5px;&quot;&gt;&lt;code&gt;# cgroup 마운트 정보 확인
$ mount | grep cgroup

# cgroup v2를 사용하는 시스템에서의 경로
$ ls -l /sys/fs/cgroup

# 특정 프로세스가 어떤 cgroup에 속해 있는지 확인 (PID 1번 기준)
$ cat /proc/1/cgroup&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  &lt;b&gt;알아두기:&lt;/b&gt; 최근 배포판(RHEL 9, Ubuntu 22.04 등)은 &lt;b&gt;Cgroup v2&lt;/b&gt;를 기본으로 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-sheets-baot=&quot;1&quot; data-sheets-root=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;항목&lt;/td&gt;
&lt;td&gt;Cgroup v1&lt;/td&gt;
&lt;td&gt;Cgroup v2&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;구조&lt;/td&gt;
&lt;td&gt;다중 계층 (Multiple Hierarchies)&lt;/td&gt;
&lt;td&gt;
&lt;div&gt;
&lt;div&gt;단일 통합 계층 (Unified Hierarchy)&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력 형태&lt;/td&gt;
&lt;td&gt;자원별로 여러 줄 출력&lt;/td&gt;
&lt;td&gt;0::/ 단 한 줄 출력&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;자원 제어&lt;/td&gt;
&lt;td&gt;각 자원 파일이 흩어져 있음&lt;/td&gt;
&lt;td&gt;
&lt;div&gt;
&lt;div&gt;/sys/fs/cgroup 아래 통합 관리&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;복잡도&lt;/td&gt;
&lt;td&gt;매우 높음 (설정이 서로 꼬일 수 있음)&lt;/td&gt;
&lt;td&gt;
&lt;div&gt;
&lt;div&gt;낮음 (직관적이고 효율적임)&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;등장 배경&lt;/td&gt;
&lt;td&gt;2.6 커널 (2000년대 후반)&lt;/td&gt;
&lt;td&gt;
&lt;div&gt;
&lt;div&gt;4.5 커널 (2016년~) / 최근 배포판 표준&lt;/div&gt;
&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  Cgroup과 네트워크: 패킷에 '신분증'을 달아주다&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;많은 분이 Cgroup을 CPU와 메모리 제한용으로만 알고 계시지만, 사실 &lt;b&gt;네트워크 트래픽 제어&lt;/b&gt;에서도 핵심적인 역할을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cgroup은 프로세스가 내보내는 네트워크 패킷에 '이 패킷은 어느 그룹 소속이다'라는 이름표를 붙여줍니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Cgroup v1: 전용 컨트롤러 방식&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v1에서는 크게 두 가지 컨트롤러를 통해 네트워크를 관리했습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;net_cls (Network Classifier):&lt;/b&gt; 패킷에 클래스 ID를 부여합니다. &lt;br /&gt;리눅스의 tc(Traffic Control) 명령어와 연동하여 특정 그룹의 대역폭(Bandwidth)을 10Mbps로 제한하는 등의 작업이 가능합니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;net_prio (Network Priority):&lt;/b&gt; 네트워크 인터페이스별로 패킷의 우선순위를 지정하여 중요한 서비스의 통신을 먼저 처리하게 합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;Cgroup v2: eBPF와의 강력한 결합&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;v2로 넘어오면서 구조가 완전히 바뀌었습니다. &lt;br /&gt;별도의 컨트롤러 대신 &lt;b&gt;eBPF(extended Berkeley Packet Filter)&lt;/b&gt; 기술을 직접 활용합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;왜 eBPF인가요?&lt;/b&gt;&lt;br /&gt;단순히 ID만 부여하던 과거와 달리, 이제는 Cgroup 단위로 eBPF 프로그램을 걸어 &lt;b&gt;&quot;이 그룹에서 나가는 패킷 중 80번 포트만 허용해!&quot;&lt;/b&gt; 같은 정교한 필터링을 커널 레벨에서 초고속으로 수행할 수 있기 때문입니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  Kubernetes와의 연결고리&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쿠버네티스 YAML 파일에 설정하는 &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&quot;resoruces.limits&quot;&lt;/b&gt;&lt;/span&gt; / &lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&quot;requests&quot;&lt;/b&gt;&lt;/span&gt;&lt;b&gt; &lt;/b&gt;결국 내부적으로 이 Cgroup을 통해 제어됩니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;CPU Limit:&lt;/b&gt; Cgroup의 &quot;&lt;b&gt;cpu.max&quot;&lt;/b&gt;(v2) 또는 &lt;b&gt;&quot;cpu.cfs_quota_us&quot;&lt;/b&gt;(v1) 설정을 통해 제어됩니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Memory Limit:&lt;/b&gt; Cgroup의 &lt;b&gt;&quot;memory.max&quot;&lt;/b&gt; (v2) 또는 &lt;b&gt;&quot;memory.limit_in_bytes&quot;&lt;/b&gt; (v1) 설정을 통해 Pod의 메모리 폭주를 방지합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;만약 Pod가 설정된 Memory Limit을 초과하려고 하면, 커널은 Cgroup의 정책에 따라 해당 프로세스를 &lt;b&gt;OOM(Out Of Memory) Kill&lt;/b&gt; 시켜 시스템 전체의 안정성을 보장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚙️ cgroup Memory&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;b&gt;# Command&lt;/b&gt;&lt;br /&gt;docker run --name stress-test --memory &quot;500m&quot; --memory-swap &quot;500m&quot; -dit python:3.11 python3 -c 'import time; d=[]; [(d.append(&quot; &quot;*1024*1024*50), print(f&quot;Allocated: {(i+1)*50}MB&quot;), time.sleep(3)) for i in range(20)]'&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  KIOR  /Users/kior  &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;d start stress-test stress-test&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;  KIOR  /Users/kior  &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;d inspect stress-test | grep -i oom&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&quot;OOMKilled&quot;: false,&lt;/span&gt; &lt;br /&gt;&quot;OomScoreAdj&quot;: 0, &lt;br /&gt;&quot;OomKillDisable&quot;: null,&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  KIOR  /Users/kior  &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;docker events --filter container=stress-test&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;2026-04-02T14:55:15.660647796+09:00 &lt;span style=&quot;color: #ee2323;&quot;&gt;container oom&lt;/span&gt; b3a1998cd5365ccf2d98bec7c00ced0f3f314d5e9ade821705a4b9d7060f5331 (desktop.docker.io/ports.scheme=v2, image=python:3.11, name=stress-test) &lt;br /&gt;2026-04-02T14:55:15.739624421+09:00 container die b3a1998cd5365ccf2d98bec7c00ced0f3f314d5e9ade821705a4b9d7060f5331 (desktop.docker.io/ports.scheme=v2, execDuration=27, exitCode=137, image=python:3.11, name=stress-test) ^C% ✘&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;  KIOR  /Users/kior  &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;d inspect stress-test | grep -i oom&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&quot;OOMKilled&quot;: true,&lt;/span&gt; &lt;br /&gt;&quot;OomScoreAdj&quot;: 0, &lt;br /&gt;&quot;OomKillDisable&quot;: null,&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;  System에서는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;/sys/fs/cgroup/memory.events&lt;/b&gt;&lt;/span&gt; 에서 종합 'oom_kill' 횟수를 알 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt; &lt;span&gt; &quot;docker stats&quot; 통해서 자원을 모니터링 하면 보다 이해가 쉽습니다!&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;⚙️ cgroup CPU&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메모리 테스트에서 '즉사(OOM Kill)'를 확인했다면, CPU 테스트는 조금 다른 양상을 보입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;⭐️ CPU는 왜 '죽지' 않는가?&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CPU 과도 사용으로 인해 컨테이너가 직접 &lt;b&gt;Kill&lt;/b&gt; 되는 현상은 발생하지 않습니다. 이는 자원의 성격 차이 때문입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;압축성(Compressible) 자원:&lt;/b&gt; CPU는 '시간'의 자원입니다. &lt;br /&gt;제한치에 도달하면 커널은 프로세스를 죽이는 대신 실행 시간을 쪼개는 &lt;b&gt;Throttling(쓰로틀링)&lt;/b&gt;을 걸어 속도를 늦춥니다.&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;b&gt;결과:&lt;/b&gt; 프로세스는 &quot;느려질 뿐&quot; 죽지 않고 좀비처럼 끈질기게 살아남습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;br /&gt;✅ Kubernetes 환경에서의 '간접 사망'&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;실무(K8s)에서는 CPU 때문에 컨테이너가 재시작되는 경우가 빈번한데, 이는 Cgroup이 죽인 것이 아니라 &lt;b&gt;시스템의 판단&lt;/b&gt;입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;b&gt;Throttling &amp;rarr; Latency 증가 &amp;rarr; livenessProbe 실패 &amp;rarr; Restart&lt;/b&gt;&lt;br /&gt;CPU 쓰로틀링으로 앱이 너무 느려져 헬스체크 응답을 제때 못 보내면, 쿠버네티스는 앱이 멈춘 것으로 판단하여 컨테이너를 재기동시킵니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;  cgroup Network (심화)&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;네트워크 cgroup은 CPU/메모리에 비해 로컬 환경에서 테스트 기록을 남기기가 매우 까다로운 영역입니다.&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;⭐️ 테스트가 까다로운 이유&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Cgroup 자체는 패킷에 '이름표(Class ID)'만 붙여줄 뿐, 실제로 속도를 줄이는 것은 커널의 &lt;b&gt;tc(Traffic Control)&lt;/b&gt; 도구와 협업해야 하기 때문입니다. 또한 컨테이너에 &lt;code&gt;NET_ADMIN&lt;/code&gt; 권한을 부여해야 하는 등 설정이 복잡합니다.&lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 그럼에도 얻을 수 있는 결과&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;복잡한 설정을 거치면 다음과 같은 확실한 결과를 얻을 수 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;Bandwidth Shaping:&lt;/b&gt; 특정 컨테이너의 대역폭을 정교하게 제한(예: 10Mbps)할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Latency Control:&lt;/b&gt; 패킷 전송 시 고의적인 지연을 발생시켜 네트워크 불안정 상황을 시뮬레이션할 수 있습니다.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Noisy Neighbor 방지:&lt;/b&gt; 특정 서비스의 트래픽 폭주가 노드 전체의 대역폭을 점유하여 다른 서비스에 영향을 주는 문제를 해결합니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;thead&gt;
&lt;tr style=&quot;background-color: #f8f9fa;&quot;&gt;
&lt;th style=&quot;width: 20%;&quot;&gt;자원&lt;/th&gt;
&lt;th style=&quot;width: 25%;&quot;&gt;성격&lt;/th&gt;
&lt;th style=&quot;width: 25%;&quot;&gt;한계 도달 시&lt;/th&gt;
&lt;th style=&quot;width: 30%;&quot;&gt;현상&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Memory&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;비압축성&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;OOM Kill&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;프로세스 즉사 (사라짐)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;CPU&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;압축성&lt;/td&gt;
&lt;td&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Throttling&lt;/b&gt;&lt;/span&gt;&lt;/td&gt;
&lt;td&gt;속도 저하 (생존 가능)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;b&gt;Network&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;흐름 제어&lt;/td&gt;
&lt;td&gt;&lt;b&gt;Queueing/Loss&lt;/b&gt;&lt;/td&gt;
&lt;td&gt;지연 발생 (정체)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align=&quot;right&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p align=&quot;right&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  마무리&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내용이 꽤 깊었지만, Cgroup의 핵심만 요약하면 의외로 단순합니다.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot; data-ke-style=&quot;style3&quot;&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Cgroup&lt;/b&gt;&lt;/span&gt; = 시스템 자원을 그룹별로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;제한 및 격리&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Namespace&lt;/b&gt;&lt;/span&gt; = 프로세스가 보는 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;환경을 격리&lt;/b&gt;&lt;/span&gt; (PID, Network 등)&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Memory&lt;/b&gt;&lt;/span&gt; = 비압축성 자원, 한계 도달 시 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;OOM Killer&lt;/b&gt;&lt;/span&gt; 작동&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;CPU&lt;/b&gt;&lt;/span&gt; = 압축성 자원, 한계 도달 시 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;Throttling&lt;/b&gt;&lt;/span&gt; 발생&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Network&lt;/b&gt;&lt;/span&gt; = &lt;b&gt;tc&lt;/b&gt;와 협업하여 &lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;대역폭 및 지연 시간&lt;/b&gt;&lt;/span&gt; 제어&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;livenessProbe&lt;/b&gt;&lt;/span&gt; = CPU 쓰로틀링 시 &lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;b&gt;컨테이너 재기동&lt;/b&gt;&lt;/span&gt;의 원인&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;Exit Code 137&lt;/b&gt;&lt;/span&gt; = 커널에 의해 강제 종료된 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;사망 기록&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인프라 공부는 부지런히...&lt;/p&gt;
&lt;figure style=&quot;color: #333333; text-align: center;&quot; contenteditable=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/017.gif&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-name=&quot;017&quot; data-emoticon-type=&quot;friends1&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;emoticon&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/017.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p align=&quot;right&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Cloud/Kubernetes</category>
      <category>cgroup</category>
      <category>DevOps</category>
      <category>docker</category>
      <category>Kubernetes</category>
      <category>OOMKiller</category>
      <category>Throttling</category>
      <category>리눅스커널</category>
      <category>리소스제한</category>
      <category>컨테이너</category>
      <category>트러블슈팅</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/82</guid>
      <comments>https://ko-o.tistory.com/82#entry82comment</comments>
      <pubDate>Thu, 2 Apr 2026 15:46:13 +0900</pubDate>
    </item>
    <item>
      <title>JEUS LOG(D_SESSION-2183, D_SESSION-3188, D_SESSION-3186)</title>
      <link>https://ko-o.tistory.com/81</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span data-phocus=&quot;https://blog.kakaocdn.net/dna/DcrxF/btsOwbTWR8v/AAAAAAAAAAAAAAAAAAAAAAQl08wEMt3KTU5pFFDQu26FQUfvq9SZYR9IxB2fTE3h/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1751295599&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=VOV1hF2RF5PlfLJq3zyQ%2FG3taUA%3D&quot; data-url=&quot;https://blog.kakaocdn.net/dna/DcrxF/btsOwbTWR8v/AAAAAAAAAAAAAAAAAAAAAAQl08wEMt3KTU5pFFDQu26FQUfvq9SZYR9IxB2fTE3h/img.png?credential=yqXZFxpELC7KVnFOS48ylbz2pIh7yKj8&amp;amp;expires=1751295599&amp;amp;allow_ip=&amp;amp;allow_referer=&amp;amp;signature=VOV1hF2RF5PlfLJq3zyQ%2FG3taUA%3D&quot;&gt;&lt;br /&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;그림1.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMlO1G/btsO0CWrsVF/nA0yVuEsfkjcvToxjhPaIK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMlO1G/btsO0CWrsVF/nA0yVuEsfkjcvToxjhPaIK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMlO1G/btsO0CWrsVF/nA0yVuEsfkjcvToxjhPaIK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMlO1G%2FbtsO0CWrsVF%2FnA0yVuEsfkjcvToxjhPaIK%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;416&quot; height=&quot;416&quot; data-filename=&quot;그림1.png&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;개발 목적으로 Webtob/JEUS 구성을 위한 분들을 위한 가이드 포스팅 :)&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;TmaxSoft Engineer의 설치방식으로 진행되며, JEUS는 11년 연속 국내 1위 미들웨어입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;Event&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;JEUS8.5에서 확인된 Log 입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;해당 로그는 패치에 따라서 발생이 됩니다.( ~2022.01 / 2025.02 ~ )&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;# Session recive&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;[D_SESSION-2183] The connection(serverA1) was unable to find the session manager. opcode = 0x103, name=serverN1&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;# Session Send&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;[D_SESSION-3188] &amp;lt;RemoteEngine(serverA1)&amp;gt; An error occurred. The session manager received an error packet from serverN1. &lt;br /&gt;[D_SESSION-3186] Sending the backup session to serverN1 failed.( count = 1 )&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;결론적으로 session backup이 일방적으로 한쪽에서 정상적으로 되지 않음으로 운영자 입장에서 세션에 문제가 발생할 수 있는 여지가 생겼음으로 수정하는게 맞습니다  &lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size23&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #9feec3;&quot;&gt;&lt;b&gt;TmaxSoft JEUS 입장&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Application과 Container 이름을 동일시 하는 것을 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;비권고&lt;/b&gt;&lt;/span&gt; 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이유는 내부 엔진동작으로 어디까지 공개할 수 있을까 싶습니다만... 직원 분들은 (ims-341005) 참고하시면 좋겠습니다.&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;  간략하게 Session Engine에서 백업 과정에서 &lt;b&gt;이름&lt;/b&gt;이&amp;nbsp;문제가 발생된다 정도로 알아주세요 :)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000;&quot; data-ke-size=&quot;size23&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;&lt;b&gt;수정&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;&lt;b&gt;방법&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;수정 방법은 간단합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;컨테이너 명을 변경&lt;/b&gt;&lt;/span&gt; 또는 Application &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;배포 폴더/war 명을 변경&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;✅&lt;span&gt;&amp;nbsp;재현 시나리오&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;# Application 배포 PATH를 컨테이너 명과 &lt;b&gt;같게&lt;/b&gt; 합니다.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[DAS]jeus_domain.adminServer&amp;gt;list-clusters List of Clusters ==================================================================== &lt;br /&gt;+----------+-------------------------+-------+-----------+---------+&lt;br /&gt;| Cluster | Server List | MEJB | Class FTP | Running | &lt;br /&gt;+----------+-------------------------+-------+-----------+---------+ &lt;br /&gt;| &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;c-server&lt;/b&gt;&lt;/span&gt; | &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;serverA1&lt;/b&gt;&lt;/span&gt;, serverN1 | false | false | true | &lt;br /&gt;+----------+-------------------------+-------+-----------+---------+ ==================================================================== &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;[DAS]jeus_domain.adminServer&amp;gt;appinfo &lt;br /&gt;Application information for the domain [jeus_domain]. ================================================================================ &lt;br /&gt;+------------+-------------+------+------------+-------------+-----------------+ &lt;br /&gt;|Application | Application | State|&amp;nbsp; &amp;nbsp; Target&amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp; Target&amp;nbsp; &amp;nbsp; | Application Path | &lt;br /&gt;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; ID&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; Type&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;|&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp; &amp;nbsp;Servers&amp;nbsp; &amp;nbsp;|&amp;nbsp; Clusters&amp;nbsp; |&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;| &lt;br /&gt;+------------+-------------+------+------------+-------------+-----------------+ &lt;br /&gt;| server | WAR | RUNNING | | &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;c-server&lt;/b&gt;&lt;/span&gt; | /sw/jeus/&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;serverA1&lt;/b&gt;&lt;/span&gt; |&lt;br /&gt;+------------+-------------+------+------------+-------------+-----------------+ ================================================================================&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;재현 시나리오는 Application 배포 방식이 &lt;b&gt;폴더&lt;/b&gt; 또는 &lt;b&gt;WAR&lt;/b&gt; 일때, Container 이름을 동일하게 serverA1으로 설정했습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(ex: /sw/jeus/app/serverA1 또는 /sw/jeus/app/severA1.war )&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그러므로 serverA1으로 요청되어 생성된 session은 정상적으로 백업되지 않을 것 입니다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;014&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;✅&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;결과보기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;  (정상) backup&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;[2026.01.27 01:23:59:058][2] [&lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;serverN1&lt;/span&gt;&lt;/b&gt;-24] [D_SESSION-3103] Successfully received backup sessions from &amp;lt;serverA1&amp;gt; . count = 1&lt;br /&gt;&lt;br /&gt;[2026.01.27 01:23:59:059][2] [&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;serverA1&lt;/b&gt;&lt;/span&gt;-90] [D_SESSION-3105] &amp;lt;app_welcome&amp;gt; Successfully sent backup session(s) to the backup server( serverN1 ). count = 1&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;  (비정상) backup&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;[2026.01.27 01:19:03:648][1] [&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;serverN1&lt;/b&gt;&lt;/span&gt;-27] [D_SESSION-2183] The connection(serverA1) was unable to find the session manager. opcode = 0x103, name=serverN1&lt;br /&gt;&lt;br /&gt;[2026.01.27 01:19:03:660][1] [&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;serverA1&lt;/b&gt;&lt;/span&gt;-53] [D_SESSION-3188] &amp;lt;RemoteEngine(serverA1)&amp;gt; An error occurred. The session manager received an error packet from serverN1.&lt;br /&gt;&lt;br /&gt;[2026.01.27 01:19:03:662][1] [&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;serverA1&lt;/b&gt;&lt;/span&gt;-53] [D_SESSION-3186] Sending the backup session to serverN1 failed.( count = 1 )&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;016&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/016.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/016.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;로그를 야금야금 &lt;b&gt;DeepDive&lt;/b&gt;하면 이상한 점이 보입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;JEUS에서 Application 배포시의 이름(id)으로 Container에서 배포되지 않는 점을 확인할 수 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(폴더 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;이름&lt;/b&gt;&lt;/span&gt;/ &lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;이름&lt;/span&gt;&lt;/b&gt;.war 의 &lt;span style=&quot;color: #f89009;&quot;&gt;&lt;b&gt;&quot;이름&quot;&lt;/b&gt;&lt;/span&gt;으로 배포된다는 점을 알 수 잇습니다.)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 문제는 그 점이 포인트가 됩니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;내부 엔진 session-scope 동작에서 위에서 언급한 &lt;b&gt;&lt;span style=&quot;color: #f89009;&quot;&gt;&quot;이름&quot;&lt;/span&gt;&lt;/b&gt;과 Container 명이 동일할 경우 &lt;b&gt;특정 기능 활성화&lt;/b&gt;되는 점이 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;반드시 TmaxSoft에서 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;권고&lt;/b&gt;&lt;/span&gt;된 방향으로 Config를 수정하고 적용하시기를 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;적극&lt;/b&gt;&lt;/span&gt;&amp;nbsp;추천드립니다&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt; &lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #99cefa;&quot;&gt;&lt;b&gt;개인적인 생각&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;요즘 여러 이슈들을 보면서 스스로가 많이 변했다고 느끼고 있습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;경험으로 인하여 이슈를 근거 기반으로 원인을 찾자고 매번 이야기 하면서... 반대가 된 방식으로 일을 한다는 느낌을 받았습니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;경찰 수사로 따지면 범인을 지정해두고 원인을 맞춘다는 느낌이랄까... ㅎㅎ&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;물론 아직은 타율이 좋아서 문제가 아니라고 생각했는데 장기적으로 이런 모습이 좋지 않다고 느꼈습니다. &lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;앞으로 더 꼼꼼하게 로그를 뜯고 씹고 맛보면서 더 솔루션의 동작과 인프라를 이해하면서 접근하도록 다짐합니다!&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure style=&quot;text-align: center;&quot; contenteditable=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/043.gif&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-name=&quot;043&quot; data-emoticon-type=&quot;friends1&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;emoticon&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/043.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>WAS/JEUS</category>
      <category>D_SESSION-2183</category>
      <category>D_SESSION-3186</category>
      <category>D_SESSION-3188</category>
      <category>jeus</category>
      <category>TmaxSoft</category>
      <category>WAS운영</category>
      <category>로그분석</category>
      <category>세션백업</category>
      <category>세션클러스터링</category>
      <category>장애분석</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/81</guid>
      <comments>https://ko-o.tistory.com/81#entry81comment</comments>
      <pubDate>Tue, 27 Jan 2026 12:57:35 +0900</pubDate>
    </item>
    <item>
      <title>WebtoB ACL 설정 방법 정리 (ACCESS 절로 IP 접근 허용&amp;middot;차단하기)</title>
      <link>https://ko-o.tistory.com/80</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zNYnA/dJMcaihK1xe/UuQURU6KXej5pLsZoLSkN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zNYnA/dJMcaihK1xe/UuQURU6KXej5pLsZoLSkN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zNYnA/dJMcaihK1xe/UuQURU6KXej5pLsZoLSkN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzNYnA%2FdJMcaihK1xe%2FUuQURU6KXej5pLsZoLSkN0%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;378&quot; height=&quot;378&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;WebtoB/JEUS 개발 환경을 구성하고자 하는 분들을 위한 실전 가이드 :)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;본 글은 TmaxSoft 엔지니어 방식에 따라 진행되며, WebtoB는 11년 연속 국내 1위 웹 서버입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 style=&quot;color: #333333; text-align: justify;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;✅ Q: WebtoB에는 ACL(Access Control List) 기능이 있나요?&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;A: 네. 있습니다 :)&lt;br /&gt;WebtoB에서는 유사한 &quot;ACCESS 절&quot;이라고 존재합니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;u&gt;&lt;b&gt; 알아두기&lt;/b&gt;&lt;/u&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;WebtoB는 방화벽(WAF) 뒤에 구성합니다.&lt;br /&gt;보안적으로 방화벽 다음 구간은 보안구역으로 취급하기 때문에 해당 구역에서 'Deny'를 하는 행위를 이미 보안에 취약하다고 보는 경우가 있습니다. 그래서 &lt;br /&gt;엔지니어들은 가급적이면 방화벽에서 적용하는 것을 권고하고 위에 언급한 부분을 감수하고 적용하겠다고 하였을 때 지원을 하고 있습니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;⚙️ 설정하기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Client에서 접속을 시도할 때 IP, network/netmask, Header 정보들을 기준으로 요청을 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;허용 &lt;/b&gt;&lt;/span&gt;/ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;제한&lt;/b&gt;&lt;/span&gt;을 설정 가능 :)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;WebtoB Config에서 적용이 가능한 것을 DIRECTORY, URI, EXT 그리고 TCPGW 적용이 가능하다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;  TEST Infra Arch&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;756&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bFNQNp/dJMcagYwq8l/GbLdIk8Q4TVekZ6TBy7tAk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bFNQNp/dJMcagYwq8l/GbLdIk8Q4TVekZ6TBy7tAk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bFNQNp/dJMcagYwq8l/GbLdIk8Q4TVekZ6TBy7tAk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbFNQNp%2FdJMcagYwq8l%2FGbLdIk8Q4TVekZ6TBy7tAk%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;323&quot; height=&quot;245&quot; data-origin-width=&quot;992&quot; data-origin-height=&quot;756&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 style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;IP 기준으로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;허용&lt;/b&gt;&lt;/span&gt; / &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;제한&lt;/b&gt;&lt;/span&gt; 대해서 포스팅 합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그 외 설정은 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;u&gt;&lt;b&gt;티맥스소프트 공식 메뉴얼&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;을 참고하여 적용하시기를 바랍니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;&lt;b&gt;⚙️ SET &lt;span style=&quot;color: #006dd7;&quot;&gt;#허용&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;http.m &amp;gt; 특정 IP만 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;허용&lt;/b&gt;&lt;/span&gt; ACCESS절 추가하기&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;(생략)&lt;br /&gt;*URI &lt;br /&gt;u_docker&amp;nbsp; &amp;nbsp; &amp;nbsp; Uri = &quot;/&quot;, SvrName = &quot;docker&quot;, SvrType = JSV, GotoEXT=N, VhostName = &quot;v_docker&quot;, &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;AccessName=&quot;access1&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*ACCESS&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;br /&gt;access1&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; Order=&quot;allow,deny&quot;, Allow=&quot;172.18.0.3&quot;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;  Result&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1768360013064&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bash-5.1# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::	ip6-localnet
ff00::	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.18.0.3	webp


bash-5.1# curl http://172.18.0.2:8080/index.jsp
Access Success&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1768360067613&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bash-5.1# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::	ip6-localnet
ff00::	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.18.0.4	admin


bash-5.1# curl http://172.18.0.2:8080/index.jsp
&amp;lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML 2.0//EN&quot;&amp;gt;
&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;
&amp;lt;TITLE&amp;gt; 302 Found &amp;lt;/TITLE&amp;gt;
&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;
&amp;lt;H1&amp;gt;Found&amp;lt;/H1&amp;gt;
&amp;lt;HR&amp;gt;
&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffc9af;&quot;&gt;&lt;b&gt;⚙️SET &lt;span style=&quot;color: #ee2323;&quot;&gt;#제한&lt;/span&gt;&lt;/b&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;http.m &amp;gt; 특정 IP만 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;제한&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;ACCESS절 추가하기&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;(생략)&lt;br /&gt;*URI&lt;br /&gt;u_docker&amp;nbsp; &amp;nbsp; &amp;nbsp; Uri = &quot;/&quot;, SvrName = &quot;docker&quot;, SvrType = JSV, GotoEXT=N, VhostName = &quot;v_docker&quot;,&amp;nbsp;&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;AccessName=&quot;access1&quot;&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;*ACCESS&lt;br /&gt;access1 &amp;nbsp; &amp;nbsp; &amp;nbsp;Order=&quot;deny,allow&quot;, Deny=&quot;172.18.0.3&quot;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size18&quot;&gt;&lt;u&gt;&lt;b&gt;  Result&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1768360142797&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bash-5.1# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::	ip6-localnet
ff00::	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.18.0.3	webp


bash-5.1# curl http://172.18.0.2:8080/index.jsp
&amp;lt;!DOCTYPE HTML PUBLIC &quot;-//IETF//DTD HTML 2.0//EN&quot;&amp;gt;
&amp;lt;HTML&amp;gt;&amp;lt;HEAD&amp;gt;
&amp;lt;TITLE&amp;gt; 302 Found &amp;lt;/TITLE&amp;gt;
&amp;lt;/HEAD&amp;gt;&amp;lt;BODY&amp;gt;
&amp;lt;H1&amp;gt;Found&amp;lt;/H1&amp;gt;
&amp;lt;HR&amp;gt;
&amp;lt;/BODY&amp;gt;&amp;lt;/HTML&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1768360165863&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;bash-5.1# cat /etc/hosts
127.0.0.1	localhost
::1	localhost ip6-localhost ip6-loopback
fe00::	ip6-localnet
ff00::	ip6-mcastprefix
ff02::1	ip6-allnodes
ff02::2	ip6-allrouters
172.18.0.4	admin


bash-5.1# curl http://172.18.0.2:8080/index.jsp
Access Success&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;  알아두기&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2개 이상의 IP 허용/제한 가능.&lt;br /&gt;[ ex: access1&amp;nbsp; &amp;nbsp; &amp;nbsp; Order=&quot;allow,deny&quot;, Allow=&quot;172.18.0.3, 172.18.0.4&quot; ]&lt;/li&gt;
&lt;li&gt;대역으로 허용/제한 가능.&lt;br /&gt;[ ex: &lt;span style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot;&gt;access1 &amp;nbsp; &amp;nbsp; &amp;nbsp;Order=&quot;deny,allow&quot;, Deny=&quot;172.18.0.&quot;&lt;/span&gt; ]&lt;/li&gt;
&lt;li&gt;header 값으로 허용/제한 가능.&lt;br /&gt;[ ex: access1&amp;nbsp; &amp;nbsp; &amp;nbsp;Order=&quot;allow,deny&quot;, AllowIf=&quot;X-Forwarded-For 100.100.100.100&quot; ]&lt;/li&gt;
&lt;li&gt;Deny 제한되면 ERROR 로그에 아래와 같이 남습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;[2026-01-14T03:17:14] [CLIENT(172.18.0.3)] [E] [ERR-00026] A URI is denied of access. {uri=/} GET /index.jsp HTTP/1.1 &lt;br /&gt;[2026-01-14T03:17:17] [CLIENT(172.18.0.4)] [E] [ERR-00026] A URI is denied of access. {uri=/} GET /index.jsp HTTP/1.1&lt;/blockquote&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;옵션에 따른 우선 순위&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.907%; text-align: center;&quot;&gt;Deny,Allow&lt;/td&gt;
&lt;td style=&quot;width: 77.093%;&quot;&gt;- Method &amp;gt; Deny &amp;gt; DenyIf &amp;gt; Allow &amp;gt; AllowIf 순서 매치&lt;br /&gt;- 요청 메소드가 항목에 포함되지 않을 경우, 요청을 허용&lt;br /&gt;- Deny, DenyIf에는 매치하지만 Allow, AllowIf와 매치하지 않는 경우 거절&lt;br /&gt;- 이외는 허용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 22.907%; text-align: center;&quot;&gt;Allow,Deny&lt;/td&gt;
&lt;td style=&quot;width: 77.093%;&quot;&gt;- Method &amp;gt; Allow &amp;gt; AllowIf &amp;gt; Deny &amp;gt; DenyIf 순서 매치&lt;br /&gt;- 요청 메소드가 항목에 포함되지 않을 경우, 요청을 거절&lt;br /&gt;- Allow, AllowIf에는 매치하지만 Deny, DenyIf와 매치하지 않는 경우 허용&lt;br /&gt;- 이외는 거절&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;✅ 결론&lt;/b&gt;&lt;/span&gt;&lt;/h2&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제 2026년 연초가 되면 모든 도메인은 보안 점검을 진행하게 됩니다 :)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;TmaxSoft는 설치 당시부터 오랜 업력으로 만들어진 표준으로 대부분의 보안취약사항을 조치를 함께하지만...&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;새롭게 나오거나 누락되는 경우가 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이번 포스팅은 ACL으로 접근을 허용/제한할 수 있는 기능에 대해서 작성하였습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;제가 요청 받았던 사이트의 경우 &quot;특정 uri는 관리용으로 접근을 제한&quot; 해야지 보안취약사항에서 문제가 발생하지 않는 상황입니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이 글을 읽는 분들도 유사한 상황에서 제일 상단의 &quot;  알아두기&quot;를 참고하고&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;적용해보시는 것을 고려하시면 좋을 것 같습니다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;032&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/032.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/032.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>WEB/WebtoB</category>
      <category>ACCESS 절</category>
      <category>IP 접근제어</category>
      <category>IP 제한</category>
      <category>ip허용</category>
      <category>TmaxSoft</category>
      <category>Webtob</category>
      <category>WebtoB ACL</category>
      <category>WebtoB 설정</category>
      <category>보안 취약점 점검</category>
      <category>웹서버 보안</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/80</guid>
      <comments>https://ko-o.tistory.com/80#entry80comment</comments>
      <pubDate>Wed, 14 Jan 2026 12:50:59 +0900</pubDate>
    </item>
    <item>
      <title>Apache 소스(src) 컴파일 설치 및 시작</title>
      <link>https://ko-o.tistory.com/79</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;144&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/eda5Ri/btsQAU9cWxd/xEcXrUHk5EjN8KNorG7B40/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/eda5Ri/btsQAU9cWxd/xEcXrUHk5EjN8KNorG7B40/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/eda5Ri/btsQAU9cWxd/xEcXrUHk5EjN8KNorG7B40/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Feda5Ri%2FbtsQAU9cWxd%2FxEcXrUHk5EjN8KNorG7B40%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;582&quot; height=&quot;144&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;582&quot; data-origin-height=&quot;144&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Apache Web Server는 &lt;span&gt;&lt;b&gt;안정성과 유연성을 갖춘 오픈소스 웹 서버&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;인터넷 서비스의 기반을 이루는 핵심 기술&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: justify;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  Apache 설치 방식은 ?&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;운영 환경에서 Apache HTTP Server(httpd)를 설치할 때 가장 많이 고민하는 것이 &lt;b&gt;패키지 매니저(yum/dnf)&lt;/b&gt; 방식과 &lt;b&gt;소스 컴파일(src)&lt;/b&gt; 방식입니다. 대다수 편리성으로 패키지 매니저를 통해서 처음 설치를 시작하지만 결국... 보안 패치 정책/버전 통제/모듈 옵션 필요 시 소스 컴파일(src)이 유리하게 됩니다.&lt;/p&gt;
&lt;/article&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;article&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;  비교&lt;/b&gt;&lt;/h2&gt;
&lt;table style=&quot;height: 284px;&quot; width=&quot;873&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;yum / dnf (패키지)&lt;/th&gt;
&lt;th&gt;소스 컴파일 (src)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;목적&lt;/td&gt;
&lt;td&gt;안정성, 표준 경로, 손쉬운 유지보수&lt;/td&gt;
&lt;td&gt;최신 버전, 맞춤 빌드, 다중 버전 공존&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;버전&lt;/td&gt;
&lt;td&gt;배포판 검증 버전(상대적으로 보수적)&lt;/td&gt;
&lt;td&gt;공식 최신 버전 선택 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;의존성&lt;/td&gt;
&lt;td&gt;자동 해결(mod_ssl, apr, pcre 등)&lt;/td&gt;
&lt;td&gt;수동 해결 필요(또는 &lt;code&gt;--with-included-apr&lt;/code&gt; 활용)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;업데이트&lt;/td&gt;
&lt;td&gt;&lt;code&gt;dnf/yum update&lt;/code&gt;로 일괄 관리&lt;/td&gt;
&lt;td&gt;재빌드 필요(보안패치 시 재컴파일)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;설치 경로&lt;/td&gt;
&lt;td&gt;/etc/httpd, /var/log/httpd 등 표준&lt;/td&gt;
&lt;td&gt;임의 지정(예: /usr/local/apache2)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;운영/장애 대응&lt;/td&gt;
&lt;td&gt;매뉴얼과 사례 풍부, 유지보수 용이&lt;/td&gt;
&lt;td&gt;담당자 숙련도 필요, 문서화 필수&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[ 개인적 생각 ]&lt;br /&gt;대부분 서비스 운영사는 보안취약사항, EOL, 각 표준사항들을 고려해야 함으로 소스 컴파일(src) 방식을 추천합니다.&lt;br /&gt;소스 컴파일(src) 설치는 어렵다고 하지만 제공되는 SHELL 사용하여 설치하면 보다 편리하게 설치할 수 있습니다.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&amp;nbsp;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;b&gt;⚙️ Apache(src) 설치&lt;/b&gt;&lt;/h2&gt;
&lt;/article&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;✅ 파일 준비하기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;네트워크 환경에 따라 아래의 방법 중 선택하시면 됩니다.&lt;br /&gt;&lt;br /&gt;[인터넷망] wget, curl, git 명령어를 통해서 받습니다.&lt;br /&gt;[폐쇄망] 로컬PC에 다운로드 후 sftp Upload&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;# SHELL 다운로드&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;curl -L -O &lt;span style=&quot;background-color: #ffff00;&quot;&gt;https://github.com/jo0ozip/kior-system-oss/raw/refs/heads/main/Apache/apache-kior-system_latest.tar.gz&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1760414555382&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[kior-oss@89790c086e28 ~]$ curl -L -O https://github.com/jo0ozip/kior-system-oss/raw/refs/heads/main/Apache/apache-kior-system_latest.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100  1850  100  1850    0     0   4755      0 --:--:-- --:--:-- --:--:--  4755


[kior-oss@89790c086e28 ~]$ ls
apache-kior-system_latest.tar.gz
[kior-oss@89790c086e28 ~]$ pwd
/sw&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;background-color: #ffff00;&quot;&gt;wget&amp;nbsp;https://github.com/jo0ozip/kior-system-oss/raw/refs/heads/main/Apache/apache-kior-system_latest.tar.gz&lt;/span&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1760414749633&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[kior-oss@89790c086e28 ~]$ wget https://github.com/jo0ozip/kior-system-oss/raw/refs/heads/main/Apache/apache-kior-system_latest.tar.gz
--2026-01-05 01:27:53--  https://github.com/jo0ozip/kior-system-oss/raw/refs/heads/main/Apache/apache-kior-system_latest.tar.gz
Resolving github.com (github.com)... 20.200.245.247
Connecting to github.com (github.com)|20.200.245.247|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.githubusercontent.com/jo0ozip/kior-system-oss/refs/heads/main/Apache/apache-kior-system_latest.tar.gz [following]
--2026-01-05 01:27:53--  https://raw.githubusercontent.com/jo0ozip/kior-system-oss/refs/heads/main/Apache/apache-kior-system_latest.tar.gz
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.111.133, 185.199.108.133, 185.199.109.133, ...
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|185.199.111.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 1850 (1.8K) [application/octet-stream]
Saving to: &amp;lsquo;apache-kior-system_latest.tar.gz&amp;rsquo;

apache-kior-system_l 100%[====================&amp;gt;]   1.81K  --.-KB/s    in 0s

2026-01-05 01:27:53 (10.4 MB/s) - &amp;lsquo;apache-kior-system_latest.tar.gz&amp;rsquo; saved [1850/1850]


[kior-oss@89790c086e28 ~]$ ls
apache-kior-system_latest.tar.gz&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;  설치 경로 생성&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;설치할 경로는 예시로&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&quot;/sw/apache&quot;&lt;/b&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;진행합니다.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot; data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28 ~]$ mkdir -p /sw/apache&lt;br /&gt;[kior-oss@89790c086e28 ~]$ cd /sw/apache&lt;br /&gt;[kior-oss@89790c086e28 apache]$ pwd&lt;br /&gt;&lt;b&gt;/sw/apache&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;009&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/009.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;다운받은&amp;nbsp;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;TAR 파일을 해제&lt;/b&gt;&lt;/span&gt;하여 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;&quot;tarballs&quot;&lt;/b&gt;&lt;/u&gt;&lt;/span&gt; 라는 폴더 안에 필요한 모듈들을 받도록 하겠습니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28 ~]$ ls &lt;br /&gt;apache-kior-system_latest.tar.gz &lt;br /&gt;&lt;br /&gt;[kior-oss@89790c086e28 ~]$ tar -zxvf apache-kior-system_latest.tar.gz -C /sw/apache&lt;br /&gt;bash_profile &lt;br /&gt;shell/ &lt;br /&gt;shell/&lt;br /&gt;1_install.sh shell/&lt;br /&gt;0_check_env.sh tarballs/&lt;br /&gt;&lt;br /&gt;[kior-oss@89790c086e28 ~]$ ls /sw/apache&lt;br /&gt;bash_profile shell &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;tarballs&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;&lt;span style=&quot;color: #666666;&quot;&gt;[kior-oss@89790c086e28 ~]$ cd /sw/apache/tarballs&lt;br /&gt;[kior-oss@89790c086e28&amp;nbsp;tarballs]$&lt;/span&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이하 예시 내용은 curl 진행하도록 하겠습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;(당연히 wget으로 됩니다 !!)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt;  OpenSSL 다운로드&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffff00;&quot;&gt;&lt;b&gt;curl&amp;nbsp;-L&amp;nbsp;-O&amp;nbsp;https://github.com/openssl/openssl/releases/download/openssl-3.5.4/openssl-3.5.4.tar.gz&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1760415025518&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[kior-oss@89790c086e28 tarballs]$ curl -L -O https://github.com/openssl/openssl/releases/download/openssl-3.5.4/openssl-3.5.4.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0
100 50.7M  100 50.7M    0     0  24.3M      0  0:00:02  0:00:02 --:--:-- 28.6M&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28 tarballs]$ ls &lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;openssl-3.5.4.tar.gz&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt; &amp;nbsp;apr 다운로드&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffff00;&quot;&gt;&lt;b&gt;curl&amp;nbsp;-L&amp;nbsp;-O&amp;nbsp;https://dlcdn.apache.org//apr/apr-1.7.6.tar.gz&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1764855412573&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[kior-oss@89790c086e28 tarballs]$ curl -L -O https://dlcdn.apache.org//apr/apr-1.7.6.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 1111k  100 1111k    0     0  2162k      0 --:--:-- --:--:-- --:--:-- 2162k&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28 tarballs]$ ls &lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;apr-1.7.6.tar.gz&lt;/b&gt;&lt;/span&gt; openssl-3.5.4.tar.gz&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt; &amp;nbsp;apr-util 다운로드&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffff00;&quot;&gt;&lt;b&gt;curl&amp;nbsp;-L&amp;nbsp;-O&amp;nbsp;https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1764855596738&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[kior-oss@89790c086e28 tarballs]$ curl -L -O https://dlcdn.apache.org//apr/apr-util-1.6.3.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  543k  100  543k    0     0   592k      0 --:--:-- --:--:-- --:--:--  592k&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28 tarballs]$ ls &lt;br /&gt;apr-1.7.6.tar.gz &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;apr-util-1.6.3.tar.gz&lt;/b&gt;&lt;/span&gt; openssl-3.5.4.tar.gz&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt; &amp;nbsp;pcre 다운로드&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffff00;&quot;&gt;&lt;b&gt;curl&amp;nbsp;-L&amp;nbsp;-O&amp;nbsp;https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.47/pcre2-10.47.tar.gz&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1764855768387&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[kior-oss@89790c086e28 tarballs]$ curl -L -O https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.47/pcre2-10.47.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:--  0:00:05 --:--:--     0
100 2727k  100 2727k    0     0   444k      0  0:00:06  0:00:06 --:--:--  444k&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28 tarballs]$ ls &lt;br /&gt;apr-1.7.6.tar.gz apr-util-1.6.3.tar.gz openssl-3.5.4.tar.gz &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;pcre2-10.47.tar.gz&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&lt;b&gt; &amp;nbsp;httpd 다운로드&lt;/b&gt;&lt;/u&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #000000; background-color: #ffff00;&quot;&gt;&lt;b&gt;curl -L -O https://dlcdn.apache.org/httpd/httpd-2.4.66.tar.gz&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;pre id=&quot;code_1764858686051&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;[kior-oss@89790c086e28 tarballs]$ curl -L -O https://dlcdn.apache.org/httpd/httpd-2.4.66.tar.gz
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100 9597k  100 9597k    0     0  6730k      0  0:00:01  0:00:01 --:--:-- 6725k&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28 tarballs]$ ls &lt;br /&gt;apr-1.7.6.tar.gz apr-util-1.6.3.tar.gz &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;httpd-2.4.66.tar.gz&lt;/b&gt;&lt;/span&gt; openssl-3.5.4.tar.gz pcre2-10.47.tar.gz&lt;/blockquote&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;여기까지가 설치를 위한 파일들을 준비를 완료했습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2026.01.08 기준으로 파일들은 LTS 또는 최신 버전으로 진행하였습니다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;014&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;✅ 설치하기&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;설치를 진행하기 위해서는 총 4단계로 진행됩니다.&lt;br /&gt;&lt;br /&gt;1. 시스템 환경변수 설정&lt;br /&gt;2. SHELL 실행&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;  시스템 환경변수 설정&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;잘 따라서 오셨으면 &lt;span style=&quot;color: #ef5369;&quot;&gt;&quot;/sw/apache&quot; 하위에 &quot;bash_profile&quot; 이라고 파일&lt;/span&gt;이 있습니다. (파일명이 &lt;b&gt;.bash_profile&lt;/b&gt; 아님)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;만약 없다면 &lt;span style=&quot;color: #006dd7;&quot;&gt;&quot;apache-kior-system_latest.tar.gz&quot; 풀어서 적용&lt;/span&gt;하시면 됩니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;020&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/020.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/020.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;적용하기 전에 'bash_profile' 파일에서 설정해야하는 부분을 먼저 수정합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28 apache]$ vi bash_profile&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;...(생략)&lt;br /&gt;&lt;br /&gt;export APACHE_HOME=&quot;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;/sw/apache&lt;/b&gt;&lt;/span&gt;&quot; &lt;br /&gt;export APACHE_ENGINE_HOME=&quot;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;/sw/apache/apache2.4&lt;/b&gt;&lt;/span&gt;&quot; &lt;br /&gt;export APACHE_LIBS_HOME=&quot;${APACHE_HOME}/apache-libs&quot; &lt;br /&gt;export APACHE_LOG_HOME=&quot;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;/sw/apache/apache2.4/log&lt;/b&gt;&lt;/span&gt;&quot;&lt;br /&gt;&lt;br /&gt;export VER_OPENSSL=&quot;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;openssl-3.5.4&lt;/b&gt;&lt;/span&gt;&quot;&amp;nbsp; //tarballs에 있는 TAR의 버전을 기입 하기 동일.&lt;br /&gt;export VER_PCRE2=&quot;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;pcre2-10.47&lt;/b&gt;&lt;/span&gt;&quot; &lt;br /&gt;export VER_APR=&quot;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;apr-1.7.6&lt;/b&gt;&lt;/span&gt;&quot; &lt;br /&gt;export VER_APRUTIL=&quot;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;apr-util-1.6.3&lt;/b&gt;&lt;/span&gt;&quot;&lt;br /&gt;&lt;br /&gt;(생략)...&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28 apache]$ ls &lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;bash_profile&lt;/b&gt;&lt;/span&gt; shell tarballs &lt;br /&gt;[kior-oss@89790c086e28 apache]$ cp -rp bash_profile ~/.bash_profile &lt;br /&gt;[kior-oss@89790c086e28 apache]$ source ~/.bash_profile &lt;br /&gt;&lt;br /&gt;[kior-oss@89790c086e28:/sw/apache]$ echo ${APACHE_HOME} &lt;br /&gt;&lt;b&gt;/sw/apache&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;&lt;b&gt;  SHELL 실행&lt;/b&gt;&lt;/u&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;설치를 위한 준비는 끝났습니다! SHELL를 실행합니다!&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28:/sw/apache/shell]$ ls &lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;0_check_env.sh&lt;/b&gt;&lt;/span&gt; 1_install.sh &lt;br /&gt;[kior-oss@89790c086e28:/sw/apache/shell]$ &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;sh 0_check_env.sh&lt;/b&gt;&lt;/span&gt; ###################################################### &lt;br /&gt;# Apache Build Environment Check @BLOG_KIOR ###################################################### &lt;br /&gt;[INFO] Checking build tools &lt;br /&gt;✘ gcc: not installed &lt;br /&gt;✘ make: not installed &lt;br /&gt;✘ perl: not installed &lt;br /&gt;✔ tar: installed (/bin/tar)&lt;br /&gt;&lt;br /&gt;[INFO] Checking development library packages &lt;br /&gt;✘ expat-devel: not installed &lt;br /&gt;✘ zlib-devel: not installed&lt;br /&gt;&lt;br /&gt;[Done] Apache build environment check completed.&lt;/blockquote&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;035&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/035.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/035.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;체크 하였을때 필요한 패키지 도구들이 설치 되어 있지 않는 경우가 있습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;yum/dnf 같은 패키지 매니저를 통해서 다운하도록 합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;[Help command: yum install -y gcc make perl expat-devel zlib-devel ]&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;패키지가 설치되면 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;다시 한번 확인&lt;/b&gt;&lt;/span&gt;하고 다음으로 넘어갑니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;###################################################### &lt;br /&gt;# Apache Build Environment Check @BLOG_KIOR ###################################################### &lt;br /&gt;[INFO] Checking build tools &lt;br /&gt;✔ gcc: installed (/usr/bin/gcc) &lt;br /&gt;✔ make: installed (/usr/bin/make) &lt;br /&gt;✔ perl: installed (/usr/bin/perl) &lt;br /&gt;✔ tar: installed (/usr/bin/tar) &lt;br /&gt;&lt;br /&gt;[INFO] Checking development library packages &lt;br /&gt;✔ expat-devel: installed &lt;br /&gt;✔ zlib-devel: installed &lt;br /&gt;&lt;br /&gt;[Done] Apache build environment check completed.&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28:/sw/apache/shell]$ ls &lt;br /&gt;0_check_env.sh &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;1_install.sh&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;[kior-oss@89790c086e28:/sw/apache/shell]$ &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;sh 1_install.sh&lt;/span&gt;&lt;br /&gt;&lt;/b&gt;[STEP&amp;nbsp;0/5]&amp;nbsp;Extracting&amp;nbsp;tarballs...&lt;br /&gt;&amp;nbsp;✔&amp;nbsp;Tarballs&amp;nbsp;extracted.&lt;br /&gt;[STEP&amp;nbsp;1/5]&amp;nbsp;Building&amp;nbsp;OpenSSL...&lt;br /&gt;&amp;nbsp;&amp;rarr;&amp;nbsp;\&lt;br /&gt;&lt;br /&gt;&lt;b&gt;( @분 완료 )&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;[kior-oss@89790c086e28:/sw/apache/shell]$&amp;nbsp;sh&amp;nbsp;1_install.sh&lt;br /&gt;&lt;br /&gt;[STEP&amp;nbsp;0/5]&amp;nbsp;Extracting&amp;nbsp;tarballs...&lt;br /&gt;&amp;nbsp;✔&amp;nbsp;Tarballs&amp;nbsp;extracted.&lt;br /&gt;[STEP&amp;nbsp;1/5]&amp;nbsp;Building&amp;nbsp;OpenSSL...&lt;br /&gt;&amp;nbsp;✔&amp;nbsp;OpenSSL&amp;nbsp;build&amp;nbsp;completed.&lt;br /&gt;[STEP&amp;nbsp;2/5]&amp;nbsp;Building&amp;nbsp;APR...&lt;br /&gt;&amp;nbsp;✔&amp;nbsp;APR&amp;nbsp;build&amp;nbsp;completed.&lt;br /&gt;[STEP&amp;nbsp;3/5]&amp;nbsp;Building&amp;nbsp;APR-util...&lt;br /&gt;&amp;nbsp;✔&amp;nbsp;APR-util&amp;nbsp;build&amp;nbsp;completed.&lt;br /&gt;[STEP&amp;nbsp;4/5]&amp;nbsp;Building&amp;nbsp;PCRE...&lt;br /&gt;&amp;nbsp;✔&amp;nbsp;PCRE&amp;nbsp;build&amp;nbsp;completed.&lt;br /&gt;[STEP&amp;nbsp;5/5]&amp;nbsp;Building&amp;nbsp;Apache&amp;nbsp;HTTPD...&lt;br /&gt;&amp;nbsp;&amp;rarr;&amp;nbsp;/&lt;br /&gt;&amp;nbsp;✔&amp;nbsp;Apache&amp;nbsp;HTTPD&amp;nbsp;build&amp;nbsp;completed.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;✅ 설치완료&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;설치가 완료되면 우선 버전정보와 load된 모듈을 확인합니다.&lt;br /&gt;그 후 기동하여 Welcome 페이지를 호출합니다.&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28:/sw/apache/shell]$ httpd -V &lt;br /&gt;Server version: Apache/2.4.66 (Unix) &lt;br /&gt;Server built: Jan 8 2026 20:07:47 &lt;br /&gt;Server's Module Magic Number: 20120211:141 &lt;br /&gt;Server loaded: APR 1.7.6, APR-UTIL 1.6.3, PCRE 10.47 2025-10-21 &lt;br /&gt;Compiled using: APR 1.7.6, APR-UTIL 1.6.3, PCRE 10.47 2025-10-21 &lt;br /&gt;Architecture: 64-bit &lt;br /&gt;Server MPM: worker &lt;br /&gt;threaded: yes (fixed thread count) &lt;br /&gt;forked: yes (variable process count) &lt;br /&gt;Server compiled with.... &lt;br /&gt;-D APR_HAS_SENDFILE &lt;br /&gt;-D APR_HAS_MMAP&lt;br /&gt;-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled) &lt;br /&gt;-D APR_USE_PROC_PTHREAD_SERIALIZE &lt;br /&gt;-D APR_USE_PTHREAD_SERIALIZE &lt;br /&gt;-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT &lt;br /&gt;-D APR_HAS_OTHER_CHILD &lt;br /&gt;-D AP_HAVE_RELIABLE_PIPED_LOGS &lt;br /&gt;-D DYNAMIC_MODULE_LIMIT=256 &lt;br /&gt;-D HTTPD_ROOT=&quot;/sw/apache/apache2.4&quot; &lt;br /&gt;-D SUEXEC_BIN=&quot;/sw/apache/apache2.4/bin/suexec&quot; &lt;br /&gt;-D DEFAULT_PIDLOG=&quot;logs/httpd.pid&quot; &lt;br /&gt;-D DEFAULT_SCOREBOARD=&quot;logs/apache_runtime_status&quot; &lt;br /&gt;-D DEFAULT_ERRORLOG=&quot;logs/error_log&quot; &lt;br /&gt;-D AP_TYPES_CONFIG_FILE=&quot;conf/mime.types&quot; &lt;br /&gt;-D SERVER_CONFIG_FILE=&quot;conf/httpd.conf&quot;&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;# 리눅스는 1024이하에서 ROOT 권한이 있어야 바인딩이 가능!(Docker와 같은 환경은 제외)&lt;br /&gt;[root@89790c086e28 /]# id &lt;br /&gt;uid=0(root) gid=0(root) groups=0(root) &lt;br /&gt;&lt;br /&gt;[root@89790c086e28 /]# &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;setcap 'cap_net_bind_service=+ep' /sw/apache/apache2.4/bin/httpd&lt;/b&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;[kior-oss@89790c086e28:/sw]$ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;apachectl start&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message &lt;br /&gt;&lt;br /&gt;[kior-oss@89790c086e28:/sw]$ &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;ps -ef | grep httpd&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;kior-oss 74 1 0 23:13 ? 00:00:00 /run/rosetta/rosetta /sw/apache/apache2.4/bin/httpd /sw/apache/apache2.4/bin/httpd -k start &lt;br /&gt;kior-oss 75 74 0 23:13 ? 00:00:00 /run/rosetta/rosetta /sw/apache/apache2.4/bin/httpd /sw/apache/apache2.4/bin/httpd -k start &lt;br /&gt;kior-oss 76 74 0 23:13 ? 00:00:00 /run/rosetta/rosetta /sw/apache/apache2.4/bin/httpd /sw/apache/apache2.4/bin/httpd -k start &lt;br /&gt;kior-oss 77 74 0 23:13 ? 00:00:00 /run/rosetta/rosetta /sw/apache/apache2.4/bin/httpd /sw/apache/apache2.4/bin/httpd -k start &lt;br /&gt;&lt;br /&gt;[kior-oss@89790c086e28:/sw]$ &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;netstat -an | grep 80&lt;/b&gt;&lt;/span&gt; &lt;br /&gt;tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5mD6e/dJMcaa43I84/FMteRF5Yjv8ePNdKFmSIj0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5mD6e/dJMcaa43I84/FMteRF5Yjv8ePNdKFmSIj0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5mD6e/dJMcaa43I84/FMteRF5Yjv8ePNdKFmSIj0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5mD6e%2FdJMcaa43I84%2FFMteRF5Yjv8ePNdKFmSIj0%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;530&quot; height=&quot;257&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;648&quot; data-origin-height=&quot;314&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323; background-color: #ffff00;&quot;&gt;&lt;b&gt;  apache 기동시 Warning LOG&lt;/b&gt;&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 172.17.0.2. Set the 'ServerName' directive globally to suppress this message&lt;br /&gt;&lt;br /&gt;# 서비스에는 무관합니다&lt;br /&gt;1. Apache가 자신의 서버의 FQDN(정규 도메인 이름) 찾지 못함&lt;br /&gt;2. 임시로 IP주소(172.17.0.2)를 부여&lt;br /&gt;3. 경고를 없애기 위해서는 httpd.conf에 ServerName 명시적으로 설정&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;color: #000000; text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  마무리&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;apache 설치를 조금 더 편안하게 할 수 있도록 작성한 포스팅입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;아래의 순서를 정리해두도록 하겠습니다.&lt;/p&gt;
&lt;blockquote style=&quot;background-color: #fcfcfc; color: #666666; text-align: left;&quot; data-ke-style=&quot;style3&quot;&gt;+&lt;span&gt;&lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt; GitHub&lt;/span&gt;&lt;/b&gt;에서 TAR 다운로드&lt;br /&gt;+ 설치 서버에서 경로생성 및 &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;TAR 묶음 해제&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;+ &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;tarballs 폴더&lt;/span&gt;&lt;/b&gt;에 컴파일할 패키지 다운로드&lt;br /&gt;+ &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;시스템 환경변수&lt;/span&gt;&lt;/b&gt; 설정&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;SHELL 실행&lt;/b&gt;&lt;/span&gt;&lt;/span&gt;&lt;/blockquote&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;Apache 설치를 위한 SHELL은 2025년도 부터 준비했던 건데...&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;핑계를 두며 미루다 2026년에 되어서 마무리하게 되었습니다...&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;미루지 말고 바로바로 올리도록!&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;006&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>WEB/Apache</category>
      <category>Apache</category>
      <category>Apache HTTP Server</category>
      <category>Apache install</category>
      <category>Apr</category>
      <category>httpd</category>
      <category>OpenSSL</category>
      <category>pcre2</category>
      <category>소스컴파일</category>
      <category>아파치설치</category>
      <category>폐쇄망</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/79</guid>
      <comments>https://ko-o.tistory.com/79#entry79comment</comments>
      <pubDate>Fri, 9 Jan 2026 08:35:59 +0900</pubDate>
    </item>
    <item>
      <title>What does it mean? 기계어 ~ IDE</title>
      <link>https://ko-o.tistory.com/78</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cB8rNU/dJMcajnjp8g/rAJP2sKClyFTS8wdVH5f21/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cB8rNU/dJMcajnjp8g/rAJP2sKClyFTS8wdVH5f21/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cB8rNU/dJMcajnjp8g/rAJP2sKClyFTS8wdVH5f21/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcB8rNU%2FdJMcajnjp8g%2FrAJP2sKClyFTS8wdVH5f21%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;428&quot; height=&quot;428&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;What is mean?&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기계어 / 어셈블리어 / 저수준 언어 / 고수준 언어 / 컴파일러 / 인터프리터 / IDE&lt;/b&gt; 같은 용어들은 개발을 시작할 때 가장 먼저 만나는 개념입니다. 처음엔 비슷해 보여도 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;u&gt;컴퓨터가 이해하는 방식&lt;/u&gt;&lt;/span&gt;과 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;사람이 작성하는 방식&lt;/u&gt;&lt;/span&gt;의 차이를 기준으로 정리하면 훨씬 깔끔해집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;span style=&quot;color: #666666; text-align: left;&quot;&gt;  &lt;/span&gt;기계어(Machine Language)란?&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;기계어는 컴퓨터(CPU)가 직접 이해하고 실행할 수 있는 언어&lt;/b&gt;이며, &lt;b&gt;0과 1(이진수)&lt;/b&gt;로 이루어져 있습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;컴퓨터 입장에서는 가장 자연스러운 언어(= 바로 실행 가능)&lt;/li&gt;
&lt;li&gt;사람 입장에서는 읽고 쓰기 어렵고 실수하기 쉬움&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어, 우리가 &amp;ldquo;더하기&amp;rdquo;를 하고 싶다고 해도 컴퓨터는 &lt;b&gt;0101 같은 비트 단위 명령&lt;/b&gt;으로 받아들입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 기계어는 사람이 아니라 CPU를 위한 언어라고 보면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #666666; text-align: left;&quot;&gt; &lt;/span&gt;&amp;nbsp;어셈블리어(Assembly Language)란?&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;어셈블리어는 기계어를 사람이 알아보기 쉬운 &lt;span style=&quot;color: #ee2323;&quot;&gt;기호(니모닉)&lt;/span&gt; 형태로 표현한 언어&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기계어를 그대로 쓰기 어렵기 때문에 등장&lt;/li&gt;
&lt;li&gt;기계어와 1:1로 대응되는 명령이 많음&lt;/li&gt;
&lt;li&gt;CPU/아키텍처에 따라 문법과 명령이 달라짐 (예: x86, ARM)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, &lt;b&gt;기계어를 사람이 조금이라도 읽을 수 있게 &lt;u&gt;&quot;번역해 둔 표현 방식&quot;&lt;/u&gt;&lt;/b&gt;이라고 이해하면 좋아요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #666666; text-align: left;&quot;&gt;  &lt;/span&gt;저수준 언어 vs 고수준 언어&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 저수준 언어(Low-level Language)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;저수준 언어는 기계(하드웨어)에 가까운 언어&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대표적으로 &lt;b&gt;기계어, 어셈블리어&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;하드웨어 제어에 유리하지만 사람이 쓰기 불편&lt;/li&gt;
&lt;li&gt;CPU 구조/레지스터/메모리 같은 개념과 밀접&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 고수준 언어(High-level Language)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;고수준 언어는 사람이 이해하기 쉬운 표현에 가까운 언어&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대표적으로 &lt;b&gt;C, C++, Java, Python, JavaScript&lt;/b&gt; 등&lt;/li&gt;
&lt;li&gt;문법이 사람에게 익숙하고, 생산성이 높음&lt;/li&gt;
&lt;li&gt;대신 실행을 위해서는 결국 &lt;b&gt;기계어로 변환 과정&lt;/b&gt;이 필요&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;정리하면&lt;/b&gt;, &lt;span style=&quot;color: #006dd7;&quot;&gt;저수준 언어 &amp;gt; 컴퓨터가 좋아하는 방식&lt;/span&gt;, &lt;span style=&quot;color: #ee2323;&quot;&gt;고수준 언어 &amp;gt; 사람이 좋아하는 방식&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;span style=&quot;color: #666666; text-align: left;&quot;&gt; &lt;/span&gt;&amp;nbsp;프로그래밍 언어란?&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로그래밍 언어는 컴퓨터와 소통하기 위해 만들어진 언어&lt;/b&gt;입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사람이 &amp;ldquo;무엇을 하고 싶은지&amp;rdquo;를 코드로 표현&lt;/li&gt;
&lt;li&gt;컴퓨터가 이해할 수 있도록 결국 &lt;b&gt;기계어로 변환&lt;/b&gt;되어 실행&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;우리가 작성하는 대부분의 코드는 고수준 언어이고, 컴퓨터가 실제로 실행하는 것은 기계어입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그래서 &lt;u&gt;&lt;b&gt;변환해주는 도구&lt;/b&gt;&lt;/u&gt;&lt;b&gt; &amp;gt; &lt;/b&gt;대표가 바로 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;컴파일러/인터프리터&lt;/b&gt;&lt;/span&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;b&gt;&lt;span style=&quot;color: #666666; text-align: left;&quot;&gt;  &lt;/span&gt;컴파일 언어 vs 인터프리터 언어&lt;/b&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 컴파일 언어(Compiled Language)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;컴파일 언어는 소스 코드 전체를 한 번에 기계어로 변환해 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;u&gt;실행 파일&lt;/u&gt;&lt;/span&gt;을 만든 뒤 실행&lt;/b&gt;합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코드 전체를 번역(컴파일) &amp;rarr; 실행 파일 생성 &amp;rarr; 실행&lt;/li&gt;
&lt;li&gt;한 번 만들어진 실행 파일은 빠르게 실행되는 경우가 많음&lt;/li&gt;
&lt;li&gt;대표 예시: &lt;b&gt;C, C++&lt;/b&gt; (일반적으로 이런 방식으로 분류)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 인터프리터 언어(Interpreted Language)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;인터프리터 언어는 코드를 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;한 줄(또는 한 단위씩) 읽으면서 해석하고 바로 실행&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;합니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실행 파일을 &amp;ldquo;미리&amp;rdquo; 만들기보다, 실행 시점에 해석하면서 동작&lt;/li&gt;
&lt;li&gt;즉시 실행이 쉬워 학습/개발 속도가 빠른 편&lt;/li&gt;
&lt;li&gt;대표 예시: &lt;b&gt;Python, JavaScript&lt;/b&gt; (일반적으로 이런 방식으로 분류)&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;컴파일&lt;/b&gt;&lt;/span&gt; &amp;gt; 미리 번역해서 실행 파일 만들고 실행&lt;br /&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;인터프리터&lt;/b&gt;&lt;/span&gt; &amp;gt; 실행하면서 바로바로 해석&lt;br /&gt;&lt;br /&gt;*참고로 실제 구현은 언어/환경에 따라 혼합(JIT 등)되는 경우도 많지만, 입문 단계에서는 위 구분으로 이해하면 가장 좋습니다.&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #f6e199;&quot;&gt;&lt;span style=&quot;color: #666666; text-align: left;&quot;&gt; &lt;/span&gt;&amp;nbsp;IDE란?&lt;/span&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;IDE(Integrated Development Environment)는 개발에 필요한 기능을 한 번에 제공하는 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;u&gt;통합 개발 환경&lt;/u&gt;&lt;/span&gt;&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 코딩만 할 수 있는 단순 편집기가 아니라, 개발 생산성을 높이기 위한 도구들이 묶여 있는 &amp;ldquo;개발용 프로그램&amp;rdquo;이에요.&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ IDE가 보통 제공하는 기능&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;코드 편집&lt;/b&gt; (문법 하이라이트, 자동 들여쓰기)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;자동완성&lt;/b&gt; (코드 추천, 함수/변수 추적)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;디버깅&lt;/b&gt; (브레이크포인트, 변수 값 확인)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;빌드/실행&lt;/b&gt; (컴파일 및 실행 버튼으로 동작)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로젝트 관리&lt;/b&gt; (폴더 구조, 의존성 관리)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적으로 IntelliJ IDEA, Eclipse, Visual Studio, VS Code(확장 포함) 같은 것들이 여기에 해당합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  마무리&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;처음에는 용어가 복잡해 보이지만, 이렇게 정리하면 의외로 단순합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;기계어&lt;/b&gt;&lt;/span&gt; = 컴퓨터가 직접 실행하는 0과 1&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;어셈블리어&lt;/b&gt;&lt;/span&gt; = 기계어를 사람이 읽을 수 있게 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;기호로 표현&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;저수준 언어&lt;/b&gt;&lt;/span&gt; = &lt;b&gt;&lt;span style=&quot;color: #006dd7;&quot;&gt;기계&lt;/span&gt;&lt;/b&gt;에 가까움 (기계어/어셈블리어)&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;고수준 언어&lt;/b&gt;&lt;/span&gt; = &lt;b&gt;&lt;span style=&quot;color: #009a87;&quot;&gt;사람&lt;/span&gt;&lt;/b&gt;에 가까움 (Java, Python 등)&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;프로그래밍 언어&lt;/b&gt;&lt;/span&gt; = 컴퓨터와 소통하기 위한 언어&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;컴파일 언어&lt;/b&gt;&lt;/span&gt; = &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;미리 번역해 실행 파일 생성&lt;/b&gt;&lt;/span&gt; 후 실행&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;인터프리터 언어&lt;/b&gt;&lt;/span&gt; = 실행하면서 &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;한 줄씩 해석&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;IDE&lt;/b&gt;&lt;/span&gt; = 개발에 필요한 기능을 &lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;b&gt;통합 제공&lt;/b&gt;&lt;/span&gt;하는 프로그램&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;프로그래밍 공부는 부지런히...&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;017&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/017.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/017.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>KIOR/Basic IT</category>
      <category>IDE</category>
      <category>개발자입문</category>
      <category>고수준언어</category>
      <category>기계어</category>
      <category>어셈블리어</category>
      <category>인터프리터</category>
      <category>저수준언어</category>
      <category>컴파일러</category>
      <category>프로그래밍기초</category>
      <category>프로그래밍언어</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/78</guid>
      <comments>https://ko-o.tistory.com/78#entry78comment</comments>
      <pubDate>Mon, 5 Jan 2026 08:00:42 +0900</pubDate>
    </item>
    <item>
      <title>What does it mean? 코딩 vs 프로그래밍</title>
      <link>https://ko-o.tistory.com/77</link>
      <description>&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8P982/btsQApuGwjs/HStduXDK8XG7R6had7ftcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8P982/btsQApuGwjs/HStduXDK8XG7R6had7ftcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8P982/btsQApuGwjs/HStduXDK8XG7R6had7ftcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8P982%2FbtsQApuGwjs%2FHStduXDK8XG7R6had7ftcK%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;428&quot; height=&quot;428&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;What is mean?&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;오늘날 IT 산업은 우리 생활 곳곳에 깊숙이 자리 잡고 있습니다. 하지만 IT 분야에 처음 진입할 때는 용어의 어려움이 진입 장벽으로 느껴지기도 합니다. 이번에는 &lt;b&gt;코딩과 프로그래밍&lt;/b&gt;, &lt;b&gt;앱과 프로그램&lt;/b&gt;의 차이와 함께 관련된 용어들의 의미를 정리해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IT를 처음 접하면 자주 마주치는 질문입니다. 용어가 비슷하게 쓰이다 보니 더 헷갈리죠.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이번 글은 딱 &lt;b&gt;7가지 키워드&lt;/b&gt;로 개념을 깔끔하게 잡는 것이 목표입니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b&gt;코딩&lt;/b&gt; (Coding)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로그래밍&lt;/b&gt; (Programming)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;개발&lt;/b&gt; (Development)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;소프트웨어&lt;/b&gt; (Software)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;프로그램&lt;/b&gt; (Program)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;데이터&lt;/b&gt; (Data)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;라이브러리&lt;/b&gt; (Library)&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 코딩(Coding): &quot;코드를 입력하는 작업 자체&quot;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;코딩&lt;/b&gt;&lt;/span&gt;은 프로그래밍 언어로 된 &lt;b&gt;코드(문장)를 작성&lt;/b&gt;하는 행위를 말합니다.&lt;br /&gt;예를 들면 Python으로 &lt;code&gt;print(&quot;Hello&quot;)&lt;/code&gt;를 쓰거나, Java로 Controller 클래스를 만드는 것입니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 프로그래밍(Programming): &quot;절차와 알고리즘을 설계하는 것&quot;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;프로그래밍&lt;/b&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&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;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 모든 과정을 통칭합니다. 그래서 흔히 &lt;b&gt;&quot;코딩은 프로그래밍의 일부&quot;&lt;/b&gt;라고 말합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 개발(Development)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;현재는 역할이 세분화되어 다양한 직무로 존재합니다. &lt;span style=&quot;background-color: #f3c000;&quot;&gt;&lt;b&gt;개발&lt;/b&gt;&lt;/span&gt;이라는 용어는 여전히 가장 자주 쓰이며 포괄적인 의미를 가집니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발은 소프트웨어를 &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;설계(Architecture)&lt;/b&gt;&lt;/span&gt;하고, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;구현(Implementation)&lt;/b&gt;&lt;/span&gt;하며, &lt;span style=&quot;color: #409d00;&quot;&gt;&lt;b&gt;배포 및 운영(Operations)&lt;/b&gt;, &lt;b&gt;유지보수(Maintenance)&lt;/b&gt;&lt;/span&gt;까지 포함하는 전반적인 기술 과정을 통칭합니다. 즉, &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;개발&lt;/b&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&gt;형상관리(Git), 빌드/배포(CI/CD)&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 data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 소프트웨어(Software)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;컴퓨터의 &lt;b&gt;하드웨어&lt;/b&gt;가 본체, CPU, 메모리처럼 물리적으로 눈에 보이고 만져지는 부분이라면,&lt;br /&gt;&lt;b&gt;소프트웨어&lt;/b&gt;는 반대로 &lt;b&gt;보이지 않는 요소들(명령&amp;middot;규칙&amp;middot;로직&amp;middot;프로그램&amp;middot;데이터 등)&lt;/b&gt;을 통칭합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 프로그램(Program): &quot;목적에 맞는 작업을 수행하는 명령 모음&quot;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;프로그램&lt;/b&gt;은 사용자의 명령에 따라 목적에 맞는 작업을 수행하는 &lt;b&gt;일련의 명령(Instruction)들의 모음&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;핵심은 &amp;ldquo;프로그램은 실행 가능한 형태로 정리된 명령의 집합&amp;rdquo;이라는 점입니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  시스템 프로그램 vs 응용 프로그램&lt;br /&gt;프로그램은 크게 두 종류로 나눠 이해하면 깔끔합니다.&lt;br /&gt;+ 시스템 프로그램: 운영체제(OS)처럼 컴퓨터 이용 환경을 제공하는 프로그램&lt;br /&gt;+ 응용 프로그램: 사용자가 목적에 따라 직접 사용하는 프로그램&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;  앱(App)과 프로그램(Program)은 뭐가 달라?&lt;br /&gt;현대에는 &amp;ldquo;앱&amp;rdquo;이라는 단어가 널리 쓰이면서, 앱과 프로그램이 혼용되기도 합니다.&lt;br /&gt;+ 프로그램: 실행 가능한 소프트웨어 전반을 의미하는 큰 개념&lt;br /&gt;+ 앱(App): 주로 사용자가 직접 실행하는 응용 프로그램을 친근하게 부르는 말&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 대부분의 앱은 프로그램의 한 종류라고 보면 됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 데이터(Data)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;데이터&lt;/b&gt;&lt;/span&gt;는 프로그램이 작업을 수행하는 데 필요한 &lt;b&gt;기초 자료&lt;/b&gt;를 말합니다.&lt;br /&gt;숫자, 문자열, 이미지, 파일, DB 레코드, 로그 등 &quot;&lt;u&gt;처리 대상&quot;&lt;/u&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ 라이브러리(Library)&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;라이브러리&lt;/b&gt;&lt;/span&gt;는 하나 이상의 프로그램에서 활용할 수 있도록 정리된 &lt;b&gt;데이터와 명령어(함수&amp;middot;클래스)의 집합&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;&quot;필요할 때 가져다 쓰는 도구 상자&quot;&lt;/u&gt;라고 생각하면 이해하기 쉽습니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;로그를 남기기 위한 로깅 라이브러리&lt;/li&gt;
&lt;li&gt;DB 접속을 위한 JDBC 드라이버&lt;/li&gt;
&lt;li&gt;HTTP 호출을 위한 클라이언트 라이브러리&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;라이브러리를 잘 활용하면, 검증된 기능을 빠르게 조합할 수 있어 개발 속도와 품질을 함께 높일 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  마무리&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;처음에는 용어가 복잡해 보이지만, 이렇게 정리하면 의외로 단순합니다.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style3&quot;&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;코딩&lt;/b&gt;&lt;/span&gt;은 쓰는 것&lt;br /&gt;+ &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;프로그램&lt;/span&gt;&lt;/b&gt;은 설계+구현&lt;br /&gt;+ &lt;b&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;개발&lt;/span&gt;&lt;/b&gt;은 전 과정&lt;br /&gt;+ &lt;span style=&quot;color: #ee2323;&quot;&gt;&lt;b&gt;소프트웨어&lt;/b&gt;&lt;/span&gt; &amp;gt; &lt;span style=&quot;color: #006dd7;&quot;&gt;&lt;b&gt;프로그램&lt;/b&gt;&lt;/span&gt;(&lt;span style=&quot;color: #009a87;&quot;&gt;&lt;b&gt;데이터&lt;/b&gt;&lt;/span&gt; 처리, 데이터 처리 과정에서 &lt;span style=&quot;color: #f3c000;&quot;&gt;&lt;b&gt;라이브러리&lt;/b&gt;&lt;/span&gt; 활용)&lt;/blockquote&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2026년 시작되면서 다시 예전처럼 모든 기록을 남기기로 마음을 먹어서 Restart!&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;작년(2025) 여러 일과 기대했던 일들이 잘 풀리지 않으면서 정신적 휴식을 했던거 같습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;이제는 다시 열공 모드로 도움이 될 포스팅을 꾸준하게 남기도록 하겠습니다 :)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;애매했던 것들 부터 정리하려고 합니다&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;008&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/008.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/008.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;</description>
      <category>KIOR/Basic IT</category>
      <category>IT기초</category>
      <category>IT용어정리</category>
      <category>개발기초</category>
      <category>개발자입문</category>
      <category>데이터</category>
      <category>소프트웨어</category>
      <category>초보개발자</category>
      <category>코딩이란</category>
      <category>프로그래밍이란</category>
      <category>프로그램</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/77</guid>
      <comments>https://ko-o.tistory.com/77#entry77comment</comments>
      <pubDate>Fri, 2 Jan 2026 19:14:42 +0900</pubDate>
    </item>
    <item>
      <title>What does it mean? Developer(개발자)</title>
      <link>https://ko-o.tistory.com/76</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;428&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c8P982/btsQApuGwjs/HStduXDK8XG7R6had7ftcK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c8P982/btsQApuGwjs/HStduXDK8XG7R6had7ftcK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c8P982/btsQApuGwjs/HStduXDK8XG7R6had7ftcK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc8P982%2FbtsQApuGwjs%2FHStduXDK8XG7R6had7ftcK%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;428&quot; height=&quot;428&quot; data-origin-width=&quot;428&quot; data-origin-height=&quot;428&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;&lt;u&gt;&lt;b&gt;What is mean?&lt;/b&gt;&lt;/u&gt;&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;오늘날 IT 산업은 우리 생활 곳곳에 깊숙이 자리 잡고 있습니다. 그 중심에는 &lt;b&gt;개발자&lt;/b&gt;라는 직업이 있습니다. 개발자는 단순히 코드를 작성하는 사람을 넘어, 세상에 새로운 가치를 만드는 창조자이자 문제 해결사라고 할 수 있습니다. 이번 글에서는 개발자의 전반적인 의미와 다양한 분야별 역할을 정리해보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt; &lt;b&gt; 통상적인 개발자 설명&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개발자는 컴퓨터 프로그램을 설계, 구현, 유지보수하는 사람을 뜻합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;소프트웨어, 웹, 모바일, 게임 등 다양한 분야에서 활동하며, 요구사항을 분석하고 이를 코드로 옮기는 과정이 핵심 역할입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;즉, 문제를 해결하기 위해 기술을 활용하는 전문가라고 할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅ &lt;b&gt;웹 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 개발자는 인터넷 환경에서 동작하는 웹사이트나 웹 애플리케이션을 만드는 사람입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프론트엔드와 백엔드를 구분하여 각각의 역할을 수행하기도 하며, 전체를 아우르는 경우도 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;주요 기술로는 HTML, CSS, JavaScript, 그리고 서버 개발 언어 및 데이터베이스가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;웹 퍼블리셔 / UI 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;웹 퍼블리셔는 웹 디자이너가 만든 시안을 실제 화면으로 구현하는 역할을 담당합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;HTML과 CSS를 통해 구조와 스타일을 만들고, 사용자에게 보기 좋은 화면을 제공합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;UI 개발자는 사용자 경험(UX)을 고려한 인터페이스를 구현하여 사용자가 편리하게 서비스를 이용할 수 있도록 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;프론트엔드 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;프론트엔드 개발자는 사용자가 직접 보는 영역, 즉 브라우저 화면을 개발합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;React, Vue, Angular 같은 프레임워크를 활용하며, 사용자 경험과 성능을 동시에 고려해야 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;디자인 감각과 프로그래밍 기술이 모두 요구되는 직무입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;백엔드 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;백엔드 개발자는 서버와 데이터베이스를 다루며, 보이지 않는 부분에서 핵심 로직을 담당합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;회원 관리, 결제 시스템, 데이터 처리 등 서비스의 본질적인 기능을 구현합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Java, Spring, Node.js, Python, Go 등의 언어와 프레임워크가 주로 사용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;풀스택 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;풀스택 개발자는 프론트엔드와 백엔드 모두를 이해하고 구현할 수 있는 개발자입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;작은 스타트업이나 프로토타입 개발에서 특히 유용하며, 넓은 범위의 기술 스택을 다루는 만큼 학습량이 많습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;모바일 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;모바일 개발자는 스마트폰과 태블릿 환경에서 동작하는 앱을 개발합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;대표적으로 iOS(Swift, Objective-C)와 Android(Java, Kotlin)가 있으며, 최근에는 Flutter, React Native 같은 크로스 플랫폼 기술도 활용됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;게임 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;게임 개발자는 엔진(Unity, Unreal Engine 등)을 활용하여 게임을 구현합니다.&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;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;응용 소프트웨어 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;응용 소프트웨어 개발자는 특정 목적에 맞는 프로그램을 제작합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;예를 들어 회계 관리 프로그램, 영상 편집 소프트웨어, CAD 프로그램 등이 이에 해당합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사용자의 요구사항을 분석해 최적의 기능을 구현하는 것이 중요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;임베디드 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;임베디드 개발자는 하드웨어와 밀접한 소프트웨어를 개발합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;IoT 기기, 가전제품, 자동차 시스템 등에서 활약하며, C, C++ 언어가 많이 쓰입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;제한된 자원(메모리, CPU)을 고려해 최적화된 코드를 작성하는 능력이 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;정보 보안 전문가&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;정보 보안 전문가는 시스템과 데이터를 해킹으로부터 지키는 역할을 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;취약점을 분석하고, 방화벽&amp;middot;침입 탐지 시스템 등을 설계&amp;middot;운영합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;u&gt;보안 사고가 빈번한 &lt;span style=&quot;color: #ee2323;&quot;&gt;시대에 점점 더 중요해지고&lt;/span&gt; 있는 분야입니다.&lt;/u&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;❓ &lt;b&gt;해커와 크래커&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;보안 분야에서 종종 등장하는 용어로 &lt;b&gt;해커&lt;/b&gt;와 &lt;b&gt;크래커&lt;/b&gt;가 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;해커는 원래 기술적 호기심으로 시스템을 탐구하는 사람을 의미했지만, 오늘날에는 보안 전문가로 불리기도 합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;반면 크래커는 악의적으로 시스템을 침투하거나 파괴하는 사람을 뜻합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;✅&amp;nbsp;&lt;b&gt;AI 개발자&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;AI 개발자는 인공지능 기술을 활용해 서비스를 개발하는 사람입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;머신러닝, 딥러닝, 자연어 처리, 컴퓨터 비전 등이 주요 분야입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python, TensorFlow, PyTorch 같은 프레임워크를 다루며, 데이터와 알고리즘에 대한 깊은 이해가 필요합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 style=&quot;text-align: center;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  마무리&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;2025년 8월 ~9월 중순이 될때 까지 너무 바쁜 일정을 보냈습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;흐릿해지는 개념을 다시 기억하고자 &quot;Basic IT&quot; 라는 카테코리를 시작하기로 했습니다 :)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;초장기에 지식의 공백이 느껴질 때 서점에서 구매한 '혼자 공부하는 얄팍한 코딩지식'을 다시 보면서 기록하려고 합니다~&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;'개발자'라는 직업을 고민하는 분들에게 도움이 되는 마음으로 저의 경험을 남겨두겠습니다.&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style1&quot; /&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;학부 시절에는 새로운 언어와 끊임없는 기술을 학습해야하는 것을 어려움을 느낄때&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;좋은 기회로 '미들웨어 엔지니어'를 할 수 있게 되었습니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 석사를 졸업하고 현재는 미들웨어 엔지니어로써 방화벽, 네트워크, 각 솔루션, Cloud Platform을 공부합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;그렇지만 개발 언어 공부도 합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;결론은... 둘다 해야합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자신의 주로 쓰는 손이 오른쪽? 왼쪽? 차이 일뿐 결국 두 손을 사용하여 박수를 칠 수 있도록 단련해야합니다.&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;자신의 흥미가 어느쪽에 있을지 고민해보세요 :)&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;032&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/032.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/032.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>KIOR/Basic IT</category>
      <category>AI개발</category>
      <category>개발자</category>
      <category>게임개발</category>
      <category>모바일개발</category>
      <category>백엔드</category>
      <category>웹개발</category>
      <category>임베디드</category>
      <category>정보보안</category>
      <category>풀스택</category>
      <category>프론트엔드</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/76</guid>
      <comments>https://ko-o.tistory.com/76#entry76comment</comments>
      <pubDate>Mon, 15 Sep 2025 22:29:11 +0900</pubDate>
    </item>
    <item>
      <title>Tomcat Session Clustering on Kubernetes</title>
      <link>https://ko-o.tistory.com/75</link>
      <description>&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&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;1280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Yk6wi/btsPj7JYMzu/rszQmnDgrAorlRoI02hjR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Yk6wi/btsPj7JYMzu/rszQmnDgrAorlRoI02hjR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Yk6wi/btsPj7JYMzu/rszQmnDgrAorlRoI02hjR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYk6wi%2FbtsPj7JYMzu%2FrszQmnDgrAorlRoI02hjR0%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;415&quot; height=&quot;415&quot; data-origin-width=&quot;1280&quot; data-origin-height=&quot;1280&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;Apache Tomcat은 경량의 오픈소스 웹 애플리케이션 서버입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;서블릿과 JSP를 실행할 수 있는 Java 기반 서버로, 개발과 운영 모두에 유용합니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size18&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;  SET Tomcat 9 Kubernetes Cluster&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tomcat을 Kubernetes 환경에서 클러스터링(세션 복제)하기 위해 과거에는 &lt;code&gt;DNS_PING&lt;/code&gt;, &lt;code&gt;KUBE_PING&lt;/code&gt; 등의 방식이 사용되었지만, &lt;b&gt;Tomcat 9 이후부터는 Apache에서 직접 제공하는 &lt;code&gt;CloudMembershipService&lt;/code&gt; 기반의 KUBE_API 방식&lt;/b&gt;이 공식적으로 권장되고 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 방식은 &lt;b&gt;Kubernetes API를 직접 호출하여&lt;/b&gt; 현재 클러스터 내에서 실행 중인 Tomcat Pod를 확인하고, 클러스터를 동적으로 구성합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;#.&amp;nbsp; &lt;code&gt;server.xml&lt;/code&gt; 클러스터 설정 예시&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tomcat의 &lt;code&gt;$CATALINA_BASE/conf/server.xml&lt;/code&gt;에 아래 내용을 추가합니다.&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;  &amp;lt;Cluster className=&quot;org.apache.catalina.ha.tcp.SimpleTcpCluster&quot;&amp;gt;
    &amp;lt;Channel className=&quot;org.apache.catalina.tribes.group.GroupChannel&quot;&amp;gt;
      &amp;lt;Membership
        className=&quot;org.apache.catalina.tribes.membership.cloud.CloudMembershipService&quot;&amp;gt;
        &amp;lt;!-- Kubernetes API를 통한 클러스터 구성 --&amp;gt;
        &amp;lt;!-- 옵션: namespace, labelSelector 지정 가능 --&amp;gt;
        &amp;lt;!--
        &amp;lt;Property name=&quot;namespace&quot; value=&quot;kior-system&quot;/&amp;gt;
        &amp;lt;Property name=&quot;labelSelector&quot; value=&quot;app=oss-tomcat&quot;/&amp;gt;
        --&amp;gt;
      &amp;lt;/Membership&amp;gt;
    &amp;lt;/Channel&amp;gt;

    &amp;lt;Manager className=&quot;org.apache.catalina.ha.session.BackupManager&quot;
             expireSessionsOnShutdown=&quot;false&quot;
             notifyListenersOnReplication=&quot;true&quot;/&amp;gt;
  &amp;lt;/Cluster&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;#. SET serviceAccount &amp;amp; RBAC&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;CloudMembershipService&lt;/code&gt;는 Kubernetes API를 조회하기 때문에, Tomcat Pod에 &lt;b&gt;ServiceAccount와 RBAC(RoleBinding)&lt;/b&gt;을 부여해야 합니다.&lt;/p&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;# sa-rbac.yaml

apiVersion: v1
kind: ServiceAccount
metadata:
  name: sa-tomcat
  namespace: kior-system
---
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
  name: r-tomcat-cluster
  namespace: kior-system
rules:
- apiGroups: [&quot;&quot;]
  resources: [&quot;pods&quot;]
  verbs: [&quot;get&quot;, &quot;list&quot;, &quot;watch&quot;]
---
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: rb-tomcat-cluster
  namespace: kior-system
subjects:
- kind: ServiceAccount
  name: sa-tomcat
  namespace: kior-system
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: Role
  name: r-tomcat-cluster&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;#.&amp;nbsp; APPLY k8s deployment&lt;/b&gt;&lt;/h4&gt;
&lt;pre class=&quot;shell&quot; data-ke-language=&quot;shell&quot;&gt;&lt;code&gt;# deployment_tomcat9.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: kior-tomcat9
  namespace: kior-system
spec:
  replicas: 3
  selector:
    matchLabels:
      app: oss-tomcat
  template:
    metadata:
      labels:
        app: oss-tomcat
    spec:
      serviceAccountName: sa-tomcat
      containers:
      - name: tomcat
        image: kior-system-oss-tomcat9:v107
        imagePullPolicy: Never
        ports:
        - containerPort: 8080          # HTTP
        env:
            - name: KUBERNETES_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style6&quot; /&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;⚙️ Prompt&lt;/b&gt;&lt;/h3&gt;
&lt;pre id=&quot;code_1752649942089&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 이미지 생성

# namespace 생성
  KIOR  k create ns kior-system
namespace/kior-system created

# serviceAccout + RBAC 생성
  KIOR  k apply -f sa-rbac.yaml
serviceaccount/sa-tomcat created
role.rbac.authorization.k8s.io/r-tomcat-cluster created
rolebinding.rbac.authorization.k8s.io/rb-tomcat-cluster created

# deployment
  KIOR  k apply -f deployment-tomcat9.yaml
deployment.apps/kior-tomcat9 created&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;  &lt;b&gt;세션 복제 확인&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;[CloudMembership-memberAdded] 스레드가 동작함을 확인할 수 있습니다.&lt;/p&gt;
&lt;pre id=&quot;code_1752655287333&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# POD list 확인
  KIOR  k get po
NAME                           READY   STATUS    RESTARTS   AGE
kior-tomcat9-c999b64ff-2rq82   1/1     Running   0          2m26s
kior-tomcat9-c999b64ff-bx4lp   1/1     Running   0          2m26s
kior-tomcat9-c999b64ff-xhn2r   1/1     Running   0          2m26s

# Tomcat 로그 확인
 ✘   KIOR  k logs kior-tomcat9-c999b64ff-2rq82
(... 생략)

16-Jul-2025 08:37:16.518 INFO [main] org.apache.catalina.ha.tcp.SimpleTcpCluster.startInternal Cluster is about to start
16-Jul-2025 08:37:16.616 INFO [main] org.apache.catalina.tribes.transport.ReceiverBase.bind Receiver Server Socket bound to:[/10.244.0.26:4000]
16-Jul-2025 08:37:17.801 INFO [Tribes-Task-Receiver[Catalina-Channel]-1] org.apache.catalina.tribes.io.BufferPool.getBufferPool Created a buffer pool with max size:[104857600] bytes of type: [org.apache.catalina.tribes.io.BufferPool15Impl]
16-Jul-2025 08:37:18.193 INFO [CloudMembership-memberAdded] org.apache.catalina.ha.tcp.SimpleTcpCluster.memberAdded Replication member added:[org.apache.catalina.tribes.membership.MemberImpl[tcp://10.244.0.25:4000,10.244.0.25,4000, alive=8687, securePort=-1, UDP Port=-1, id={-85 -79 -12 -111 43 48 -7 16 -58 -19 -22 -1 -45 -92 -26 101 }, payload={}, command={}, domain={}]]
16-Jul-2025 08:37:18.195 INFO [CloudMembership-memberAdded] org.apache.catalina.ha.tcp.SimpleTcpCluster.memberAdded Replication member added:[org.apache.catalina.tribes.membership.MemberImpl[tcp://10.244.0.24:4000,10.244.0.24,4000, alive=8687, securePort=-1, UDP Port=-1, id={-107 -44 66 28 -54 -35 97 -23 -100 -90 -87 -90 93 -35 86 -54 }, payload={}, command={}, domain={}]]

(...생략)
16-Jul-2025 08:37:24.293 INFO [main] org.apache.catalina.ha.session.JvmRouteBinderValve.startInternal JvmRouteBinderValve started
16-Jul-2025 08:37:24.303 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [&quot;http-nio-8080&quot;]
16-Jul-2025 08:37:24.317 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in [8222] milliseconds&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;code&gt;&lt;/code&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  &lt;b&gt;&lt;code&gt;&amp;lt;distributable/&amp;gt;&lt;/code&gt; 반드시 추가&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;code&gt;&amp;lt;distributable/&amp;gt;&lt;/code&gt; 태그는 &lt;b&gt;세션 복제를 위한 필수 조건&lt;/b&gt;입니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Tomcat 클러스터가 아무리 잘 설정되어 있더라도, &lt;code&gt;web.xml&lt;/code&gt;에 이 태그가 누락되면 &lt;b&gt;세션 복제는 절대 수행되지 않습니다.&lt;/b&gt;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 왜 필요한가?&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-size=&quot;size16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Tomcat은 &lt;code&gt;&amp;lt;distributable/&amp;gt;&lt;/code&gt; 태그가 있는 WAR 파일만 &lt;b&gt;세션 공유 대상&lt;/b&gt;으로 간주합니다.&lt;/li&gt;
&lt;li&gt;태그가 없으면 &lt;b&gt;BackupManager&lt;/b&gt; 또는 &lt;b&gt;DeltaManager&lt;/b&gt;가 있어도 복제가 이루어지지 않습니다.&lt;/li&gt;
&lt;li&gt;이는 &lt;b&gt;J2EE 명세&lt;/b&gt;와 Tomcat 클러스터 정책에 따른 것입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 예시: &lt;code&gt;web.xml&lt;/code&gt; 설정&lt;/h4&gt;
&lt;pre class=&quot;xml&quot;&gt;&lt;code&gt;&amp;lt;web-app xmlns=&quot;http://xmlns.jcp.org/xml/ns/javaee&quot;
         xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
         xsi:schemaLocation=&quot;http://xmlns.jcp.org/xml/ns/javaee
                             http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd&quot;
         version=&quot;3.1&quot;&amp;gt;

  &amp;lt;!-- 세션 복제를 활성화하기 위한 필수 태그 --&amp;gt;
  &amp;lt;distributable/&amp;gt;

  &amp;lt;session-config&amp;gt;
    &amp;lt;session-timeout&amp;gt;30&amp;lt;/session-timeout&amp;gt;
  &amp;lt;/session-config&amp;gt;

  &amp;lt;welcome-file-list&amp;gt;
    &amp;lt;welcome-file&amp;gt;index.jsp&amp;lt;/welcome-file&amp;gt;
  &amp;lt;/welcome-file-list&amp;gt;

&amp;lt;/web-app&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;  &lt;b&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;Java 11 이상에서 발생할 수 있는&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;TLS 1.3 프로토콜의 handshake 호환성 문제&lt;/span&gt; &lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Caused by: javax.net.ssl.SSLHandshakeException: extension (5) should not be presented in certificate_request&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;  원인 분석&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CloudMembershipService&lt;span&gt;는 내부적으로 &lt;/span&gt;HttpsURLConnection&lt;span&gt;을 이용해 Kubernetes API&lt;/span&gt;&lt;span&gt;에 접근합니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;이때 Java11 이상에서는 기본적으로 TLS 1.3을 사용함으로 Kubernetes 일부 API 서버와 호환이 안될 수 있습니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;✅ 방법: TLS 1.2로 강제 다운그레이드 (가장 간단하고 효과적)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Tomcat 실행 시 &lt;/span&gt;&lt;b&gt;Java 옵션에 TLS 버전 제한을 추가&lt;/b&gt;&lt;span&gt;합니다.&lt;/span&gt;&lt;/p&gt;
&lt;pre id=&quot;code_1752655587542&quot; class=&quot;shell&quot; data-ke-language=&quot;shell&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;-Djdk.tls.client.protocols=TLSv1.2&lt;/code&gt;&lt;/pre&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;✅ 결론&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;Tomcat 9 이상에서는 Kubernetes 환경에서 클러스터링을 구성할 때 &lt;code&gt;CloudMembershipService&lt;/code&gt;를 사용하는 것이 공식 권장 방식&lt;/b&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;Kubernetes 환경에서의 Tomcat 세션 클러스터링은&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;고가용성과 무중단 서비스&lt;/b&gt;를 구현하는 데 중요한 요소입니다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;분명한 제한점은 있지만 유용하게 사용할 수 있습니다.&lt;/p&gt;
&lt;figure contenteditable=&quot;false&quot; data-ke-type=&quot;emoticon&quot; data-ke-align=&quot;alignCenter&quot; data-emoticon-type=&quot;friends1&quot; data-emoticon-name=&quot;011&quot; data-emoticon-isanimation=&quot;false&quot; data-emoticon-src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/011.gif&quot;&gt;&lt;img src=&quot;https://t1.daumcdn.net/keditor/emoticon/friends1/large/011.gif&quot; width=&quot;150&quot; /&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>WAS/Tomcat</category>
      <category>cloudmembershipservice</category>
      <category>java tls 오류</category>
      <category>Kubernetes</category>
      <category>kubernetes 클러스터</category>
      <category>kube_api</category>
      <category>RBAC</category>
      <category>serviceaccount</category>
      <category>tomcat</category>
      <category>tomcat 클러스터링</category>
      <category>세션 복제</category>
      <author>KO_O</author>
      <guid isPermaLink="true">https://ko-o.tistory.com/75</guid>
      <comments>https://ko-o.tistory.com/75#entry75comment</comments>
      <pubDate>Wed, 16 Jul 2025 17:52:11 +0900</pubDate>
    </item>
  </channel>
</rss>