분류 전체보기 220

공공·SI·클라우드·AI 시대에 개발자가 반드시 알아야 할 라이선스 3대 지뢰

GPL / CPAL / AGPL — 실무 위험 비교라이선스한 줄 요약GPL코드 전염 라이선스CPAL네트워크 사용시 소스 공개 강제AGPL클라우드 서비스 전체 소스 공개 강제 1️⃣ GPL — 상용 전염 리스크구조GPL 코드를 사용하면👉 내 코드도 GPL로 공개해야 함즉, GPL 코드 1줄 사용 → 전체 소스 GPL 공개 의무 왜 위험한가사내 시스템공공 시스템SI 납품물전부 소스 공개 의무 발생그래서:상황결과사내 서비스법무 거절공공 납품감리 지적상용 제품사업 불가GPL은 언제 안전?연구용개인 프로젝트오픈소스 공개 전제 프로젝트2️⃣ CPAL — 네트워크 공개 의무구조CPAL = GPL + 네트워크 조항서버에서 서비스하면소스 공개해야 함의미 사용자가 웹으로 접속 → 네트워크 사용 → 소스 공개 의무 그래서..

스프링 개발자 2026.01.12

MIT License 유래와 핵심 정리

1️⃣ 유래MIT License는미국 MIT(Massachusetts Institute of Technology)에서연구·개발 결과물을 자유롭게 공유하기 위해 만든 라이선스가장 단순하고 자유로운 오픈소스 라이선스 중 하나👉 목적:“제약 없이 쓰되, 책임은 사용자에게”2️⃣ 라이선스 성격 한 줄 요약상업적 사용 가능 + 소스 공개 의무 없음 + 고지만 하면 끝3️⃣ MIT License 핵심 특징항목내용상업적 사용가능수정가능재배포가능소스 공개 의무❌ 없음특허권 보호❌ 명시 없음라이선스 고지✅ 필요책임사용자 책임4️⃣ 반드시 해야 하는 것 (의무)MIT License 사용 시:원 저작권자 표시 유지MIT License 전문 포함👉 이 두 개만 하면 끝입니다.5️⃣ Apache 2.0과 차이항목MITApa..

Apache License 2.0 — 유래와 핵심 정리

1️⃣ 유래Apache License는Apache Software Foundation(ASF) 가Apache HTTP Server 같은 오픈소스 프로젝트를 배포하기 위해 만든 라이선스기업·상용 사용을 적극 허용하는 실무 친화 라이선스2004년에 현재 표준인 Apache License 2.0 발표.👉 목적:“오픈소스를 기업에서도 법적 리스크 없이 쓰게 하자”2️⃣ 라이선스 성격 한 줄 요약상업적 사용 가능 + 소스 공개 의무 없음 + 특허권까지 보호그래서 기업에서 제일 선호하는 라이선스 중 하나입니다.3️⃣ Apache 2.0 핵심 특징항목내용상업적 사용가능수정가능재배포가능소스 공개 의무❌ 없음특허권 보호✅ 포함라이선스 고지✅ 필요책임사용자 책임4️⃣ 반드시 해야 하는 것 (의무)Apache Licens..

커넥션 풀의 변천사[old vs modern]

과거에 주로 사용되던 Commons DBCP나 C3P0 같은 "옛날 스타일"의 커넥션 풀과 현재 표준인 HikariCP는 설계 철학부터 성능 최적화 방식까지 큰 차이가 있습니다.단순히 "더 빠르다"를 넘어, 어떤 기술적 포인트가 다른지 비교해 정리해 드립니다.1. 한눈에 보는 비교 (Old vs. Modern)구분옛날 스타일 (DBCP, C3P0)요즘 스타일 (HikariCP)철학풍부한 기능과 세밀한 옵션 제공극단적인 단순화와 성능 최적화라이브러리 크기상대적으로 무거움 (수 MB)매우 가벼움 (약 130KB)동기화 전략synchronized 등 무거운 락 위주Lock-free 설계 (ConcurrentBag)연결 검증testOnBorrow, validationQuery 위주maxLifetime 기반의 선..

🤖 AI 무료 vs 유료, 정말 돈 낼 가치 있을까?

오늘은 ai 무료/유료 어떤 차이가 있는지 한번 같이 고민해보면 좋을 것 같습니다 :) "AI 유료 버전… 월 3만원씩 내고 쓸 만한가요?" ━━━━━━━━━━━━━━━━ 🔍 주요 3개 AI 완벽 비교 ━━━━━━━━━━━━━━━━ ┌─────────────────────┐ │ 1️⃣ ChatGPT (OpenAI) │ └─────────────────────┘ [ 무료 - GPT-4o mini ] - 비용: 0원 - 성능: 중간 수준 - 제한: 3시간마다 약 10-15회 - 특징: 간단한 질문은 OK [ 유료 - ChatGPT Plus ] - 비용: 월 $20 (약 27,000원) - 모델: GPT-4o (최신 최강 모델) - 제한: 3시간마다 80회 (거의 무제한) - 추가 혜택: ✅ DAL..

클래스풀 IP 주소 체계에 대해서 설명해주세요.

백엔드와 관련된 질문이에요.클래스풀 주소 체계(Classful Addressing) 은 IP 주소를 규격화된 크기별로 구분시키는 방식입니다. IP 주소를 클래스(A,B,C 등)별로 규격화(유형화)시켜, 쉽게 식별할 수 있도록 합니다.IPv4 주소는 4바이트(32비트)이며, 1바이트씩 끊어서 표기합니다. 이때 각 바이트를 옥텟이라고 부르며, 각 옥텟은 0부터 255까지의 숫자를 표현할 수 있어요. ex) 0.0.0.0 ~ 255.255.255.255A 클래스는 초기 비트가 0(2진수)으로 시작하는 1옥텟을 네트워크 주소로 사용하며, 3옥텟을 호스트 주소로 사용합니다. 호스트 주소의 0과 255는 특수한 용도(전자는 네트워크 식별, 후자는 브로드캐스트 주소)로 사용되므로, A 클래스에는 2^7개의 네트워크 ..

대칭키 및 비대칭키 암호화 방식에 대해서 설명해주세요.

평문을 암호화하고 복호화하는 경우 키를 사용할 수 있는데요. 이때, 암복호화에 사용하는 키가 동일한 경우 대칭키 암호화(Symmetric Key Cryptography) 라고 하며, 암복호화에 사용하는 키가 서로 다른 경우를 비대칭키 암호화 혹은 공개키 암호화(Asymmetric Key Cryptography) 라고 합니다.대칭키 암호화는 비대칭키 암호화에 비해서 속도가 빠르다고 알려져 있습니다. 하지만, 대칭키를 교환하는 과정에서 탈취 위험성이 존재할 수 있습니다. 또한, 대칭키 암호화 방식에서는 각 통신 참여자 쌍마다 다른 키가 필요할 수 있는데요. 이 경우 통신 대상이 많아질수록 대칭키의 수가 많아지므로 키 관리가 복잡해질 수 있습니다.비대칭키 암호화에는 공개키와 개인키가 존재합니다. 일반적으로 이..

핸드폰 분해 삼성 갤럭시 노트8 (SM-N950N) -초소형 분산 임베디드 제어 시스템

좋습니다. SM-N950N (갤럭시 노트8) 기준으로, 실제로 중고 시장에서 거래되는 부품만 목록으로 정리합니다.(반드시 정상 작동 확인 후 판매 권장합니다.)✅ 1) 상단 모듈 및 센서 부품명거래성참고 후면 듀얼 카메라 모듈 (광각 + 망원) 📈 매우 잘 팔림 센서/렌즈 상태 중요 전면 카메라 모듈 📈 판매 가능 AF 여부 체크 홍채/IR 센서 모듈 📉 수요 낮음 일부 리퍼 장비용 근거리 조도/근접 센서 플렉스 📉 거의 없음 고장 잦음 ✅ 2) 메인보드 주변부 주의: 메인보드 자체는 ..

JVM에서 GC 대상 객체를 판단하는 기준은 무엇인가요?

GC(Garbage Collection)는 자바의 메모리 관리 방법의 하나이며, JVM의 힙 영역에서 동적으로 할당했던 메모리 중에서 필요 없어진 객체를 주기적으로 제거하는 것을 의미합니다. GC는 특정 객체가 사용 중인지 아닌지 판단하기 위해서 도달 가능성(Reachability) 라는 개념을 사용하는데요. 특정 객체에 대한 참조가 존재하면 도달할 수 있으며, 참조가 존재하지 않는 경우에 도달할 수 없는 상태로 간주합니다. 이때, 도달할 수 없다는 결론을 내린다면 해당 객체는 GC의 대상이 됩니다.도달 가능성은 어떻게 판단하나요? 🤓힙 영역에 있는 객체에 대한 참조는 4가지 케이스가 존재하는데요. 힙 내부 객체 간의 참조, 스택 영역의 변수에 의한 참조, JNI에 의해 생성된 객체에 대한 참조(네이티..

Node와 Element의 차이에 대해 설명해주세요.

Node와 Element의 핵심적인 차이점에 대해 설명드리겠습니다.Node는 DOM을 구성하는 가장 기본적인 구성 단위입니다. Node에는 여러 가지 타입이 존재합니다. "Document Node"는 HTML 문서 전체를 나타내는 루트 노드이며, "Element Node"는 HTML 태그를 나타내고, "Text Node"는 텍스트 내용을, "Comment Node"는 주석을 나타냅니다. 이처럼 Node는 DOM 트리의 모든 구성 요소를 포함하는 포괄적인 개념입니다.반면 Element는 Node의 특정 타입 중 하나로, HTML이나 XML 태그로 표현되는 객체를 의미합니다. 쉽게 말해, 모든 Element는 Node이지만, 모든 Node가 Element인 것은 아닙니다. Element는 id, class,..

시스템 콜이란 무엇인가요?

운영체제는 사용자가 실행하는 프로그램이 하드웨어 자원에 직접 접근하는 것을 방지해 자원을 보호합니다. 왜냐하면, 프로그램이 CPU, 메모리, 하드 디스크에 마음대로 접근하고 조작할 수 있다면, 자원이 무질서하게 관리 될 수 있으며 한 프로그램의 실수가 전체 컴퓨터에 영향을 주기 때문입니다. 운영체제는 프로그램들이 자원에 접근하려 할 때 오직 자신을 통해서만 접근하도록 하여 자원을 보호합니다.따라서, 프로그램은 자원에 접근하기 위해서 운영체제에게 도움을 요청해야 합니다. 그리고, 프로그램의 요청을 받은 운영체제는 응용 프로그램 대신 자원에 접근해 요청한 작업을 수행합니다. 이러한 과정은 이중 모드로 구현되는데요. 이중 모드(Dual Mode) 는 CPU가 명령을 실행하는 모드를 사용자 모드와 커널 모드로 ..

CPU 스케줄링에 대해서 설명해주세요.

CPU 스케줄링은 운영체제가 프로세스들에게 공정하고 합리적으로 CPU 자원을 배분하는 것을 의미합니다. 만약 CPU 스케줄링이 없다면, 반드시 실행되어야 할 프로세스들이 실행되지 못할 수 있으며, 당장 급하지 않은 프로세스가 실행되는 등 무질서한 상태가 발생할 수 있습니다. CPU 스케줄링은 선점형과 비선점형 방식으로 구현할 수 있으며, 다양한 스케줄링 알고리즘이 존재합니다.선점형 스케줄링과 비선점형은 각각 어떤 특징이 존재하나요? 🤓선점형 스케줄링(Preemptive Scheduling) 은 프로세스가 CPU를 사용하고 있더라도 운영체제가 프로세스로부터 자원을 강제로 빼앗아 다른 프로세스에 할당할 수 있는 방식입니다. 해당 방식은 응답 시간이 낮으며, 효율적이지만 컨텍스트 스위칭 오버헤드가 발생할 수..

DB 부하 vs App 부하를 나누는 기준

DB 부하 vs App 부하를 나누는 기준은 “병목이 데이터 접근 계층(I/O, 락, 플랜) 에 있냐, 아니면 애플리케이션 계층(CPU, GC, 스레드, 외부호출) 에 있냐”로 쪼개면 됩니다. 실무에서는 아래 체크리스트로 거의 판별돼요.1) 지표로 1차 분류 (가장 확실)DB 부하 쪽 신호DB CPU가 높고, slow query / p95 쿼리시간이 튐connections 증가 + lock wait, deadlock, buffer/cache miss, IO wait 상승특정 테이블/인덱스가 핫스팟(인덱스 스캔 폭증, Full Scan, Sort/Hash Spill)App은 “DB 응답 기다리느라” 스레드가 묶임 (thread dump에 JDBC wait 다수)App 부하 쪽 신호App CPU 높음, DB..

디스크 접근 시간에 대해서 설명해주세요.

일반적으로 단일-헤드 디스크 시스템에서 특정 데이터 블록(하나 이상의 섹터로 이루어짐)을 읽거나 쓰기 위해서는 헤드를 데이터가 존재하는 트랙으로 이동시키는 과정, 원하는 데이터가 저장된 섹터가 헤드 아래로 회전되어 올 때까지 기다리는 과정, 데이터를 전송하는 과정이 필요합니다. 그리고 이 모든 과정을 수행하는 데 걸리는 시간을 디스크 접근 시간(Disk Access Time) 이라고 합니다. 디스크 접근 시간은 탐색 시간, 회전 지연 시간, 데이터 전송 시간을 합쳐 계산할 수 있습니다.탐색 시간(Seek Time) 은 헤드를 데이터가 존재하는 트랙으로 이동시키는 과정에서 소요되는 시간을 의미합니다. 기계적인 이동이기 떄문에 시동 시간이 필요합니다. 액세스할 데이터들의 지역성이 높은 경우에는 헤드의 이동 ..

해시 충돌에 대해서 설명해주세요.

해시(Hash) 자료 구조는 키값 쌍으로 이루어진 데이터 구조로 키를 이용해 값을 O(1) 시간 복잡도로 찾을 수 있습니다. 해시 자료 구조는 키를 해시 함수에 넣어서 나오는 결과를 기반으로 값을 관리하는데요. 해시 함수는 다른 키를 사용해도 같은 결과가 나오는 경우가 존재합니다. 이를 해시 충돌(Hash Collision) 이라고 합니다.해시 충돌은 어떻게 완화할 수 있나요? 🤓해시 충돌을 완화하기 위한 접근 방법으로 개방 주소법과 분리 연결법이 대표적인데요. 개방 주소법(Open Addressing) 은 특정 값이 들어가야 하는 자리(버킷)가 이미 사용되고 있는 경우 다른 해시 버킷에 데이터를 삽입하는 반면, 분리 연결법(Separate Chaining) 은 버킷을 연결 리스트나 트리 형태로 관리하..

교착 상태에 대해서 설명해주세요

교착 상태(deadlock) 는 두 개 이상의 작업이 서로 상대방의 작업이 끝나기만을 기다리고 있어 결과적으로 아무것도 완료되지 못하는 상태를 의미합니다. 가령, A 프로세스가 자원 A를 가지고 자원 B를 필요로 합니다. 그리고, B 프로세스는 자원 B를 가지고 자원 A가 필요할 때 두 개의 프로세스는 교착 상태에 빠져 어느 작업도 진행할 수 없는 상황이 됩니다.교착 상태가 발생하는 조건을 알고 계신가요? 🤔4가지 조건(상호 배제, 점유 대기, 비선점, 원형 대기)이 모두 만족하는 경우, 교착 상태에 빠질 수 있습니다.상호 배제(mutual exclusion) 는 한 프로세스가 사용하는 자원을 다른 프로세스가 사용할 수 없는 경우를 의미합니다.점유 대기(hold and wait) 는 자원을 할당받은 상..

📌 MariaDB vs PostgreSQL vs Oracle – 실무 개발자를 위한 핵심 비교 정리

DB 선택은 시스템 설계에서 가장 중요한 의사결정 중 하나입니다.오늘은 MariaDB, PostgreSQL, Oracle 세 가지 DB를개발자 관점에서 명확하게 비교해보겠습니다.특히 SI/기관/대규모 시스템 경험 기준으로 실무에서 어떤 차이가 나는지 집중해서 설명합니다.1. 개요 – 각 DB의 포지션✔ MariaDBMySQL 기반의 오픈소스 DB.가볍고 빠르고, 단순 CRUD 기반 서비스에 적합.스타트업·내부관리·웹서비스에서 많이 사용.✔ PostgreSQL표준 SQL 준수율 최고 수준의 오픈소스 ORDBMS.복잡한 쿼리·분석·JSON 처리·MVCC 안정성에 강함.기관·SI·엔터프라이즈에서도 빠르게 확산 중.✔ Oracle대규모 금융/공공기관에서 사용하는 대표적인 상용 DB.RAC, Undo 기반 MVC..

전자정부 프레임워크의 변천사

1. 초기 단계: 전자정부 구축의 시작 (2004~2012년)도입 배경: 국내 공공기관의 전자정부 시스템 구축 시 다양한 기술이 무질서하게 사용되면서 기술 표준화의 필요성이 대두됨.핵심 목표: 공공IT 시스템 개발의 표준화, 재사용성을 높이고 비용 절감 효과를 기대.주요 특징: iBATIS 및 Spring, Java 기반으로 설계되었으며, 데이터 베이스와 비즈니스 로직을 쉽게 연결하고 처리할 수 있는 방법이 제시됨.2. 성장 단계: 전자정부프레임워크 1.0 및 개선 (2013~2015년)전자정부프레임워크 1.0의 등장: 공공부문 표준화 작업의 일환으로, 개발 생산성과 유지보수 편의성 측면에서 개선된 초기 버전 공개.관련 기술:Java/Spring Framework 기반.MyBatis(iBATIS에서 발전..

mybatis 변천사(feat. iBATIS )

MyBatis (2010년대 이후, 현재도 활발)iBATIS 후속 프로젝트 (Apache → 개발자 커뮤니티 독립).철학: 여전히 “SQL은 내가 통제한다(SQL 중심)”이지만,XML의 가독성 개선애노테이션 기반 Mapper 인터페이스 지원CamelCase 매핑, 타입 핸들러 등 자동화 기능 강화Spring과 통합이 잘 되어 있음 (MyBatis-Spring)대규모 트래픽 처리하는 전자상거래, 금융권, 공공 SI 등에서 여전히 많이 씀. 🔹 iBATIS 시대iBATIS 1.x (2002~2004)SQLMap 기반 단순 매핑 프레임워크.Java 진영 외에도 .NET, Ruby 버전도 존재.iBATIS 2.x (2004~2009)XML 기반 매퍼 구조 정착.당시 국내 SI 업계에서 표준처럼 많이 사용됨...