반응형
작성일: 2025년 1월 11일

 

집에서 혼자 끄적끄적 거리면서 개발할 때는 내가 어떤 라이브러리를 사용하는지 큰 관심이 없지만,

회사에서 상용 소프트웨어를 만들면서 오픈소스 라이브러리를 쓸때마다 라이센스(라이선스)를 확인하게 된다.

 

라이센스 유형이 다양한데, "한국저작권위원회"의 "오픈 소스 라이선스 가이드"가 설명이 가장 쉬운 것 같다.

아래 "오픈 소스 라이선스 가이드"가 다루는 내용은;

  • BSD 계열
    • BSD
    • Apache
  • GPL 계열
    • GPL 2.0
    • GPL 3.0
    • LGPL
    • Affero GPL
    • GPL Exceptions
  • MPL 계열
    • MPL
    • CDDL
    • CPL, EPL
  • Font License
    • GPL Font Exception
    • SIL Open Font License (OFL)
    • Ubuntu Font License

 

https://www.olis.or.kr/license/licenseGuide.do

 

라이선스 가이드

오픈 소스 라이선스 가이드 4.0은 오픈소스 개발 실무자들이 쉽게 오픈소스 라이선스의 내용을 참고할 수 있도록 제정된 것으로, 2019년 6월에 발표되었다. 목차 이 가이드는 다음과 같은 목차로

www.olis.or.kr

 

 

오픈 소스를 사용하다가 생기는 분쟁에 대한 대응 방안 가이드도 제공되고 있다.

 

https://www.olis.or.kr/license/conflictGuide.do

 

분쟁 대응방안 가이드

오픈소스SW 라이선스 분쟁 대응방안 가이드는 오픈소스를 활용하는 과정에서 발생할 수 있는 법적 리스크와 분쟁 사례들을 정리하고, 법적 리스크 관리에 관한 기업들의 사례를 제시함으로써,

www.olis.or.kr

 

 

반응형
작성일: 2025년 1월 10일

 

Linux kernel source code를 다운로드하는 방법

GitHub에서 Git Clone하기

$ git clone https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git

 

참고: github에서 clone하면, 다운로드 시간이 엄청 길다. 내 경우는 10분 소요되었다.

 

 

Tar 파일로 다운로드하기

아래 Linux Kernel 공식 Archive 홈페이지에서 원하는 Linux 버전의 소스 코드에 대한 Tar 파일을 다운로드.

https://www.kernel.org

 

 

반응형

 

작성일: 2024년 12월 16일

 

eBook(PDF) - Learning eBPF 

https://isovalent.com/books/learning-ebpf/

 

O'Reilly book: Learning eBPF by Liz Rice

The O'Reilly book Learning eBPF by Liz Rice now available for download!

isovalent.com

 

참고: 위 책에 소개된 예제 코드는 아래 github에서 열람할 것.

https://github.com/lizrice/learning-ebpf?tab=readme-ov-file

 

GitHub - lizrice/learning-ebpf: Learning eBPF, published by O'Reilly - out now! Here's where you'll find a VM config for the exa

Learning eBPF, published by O'Reilly - out now! Here's where you'll find a VM config for the examples, and more - lizrice/learning-ebpf

github.com

 

libbpfgo-beginners

https://github.com/lizrice/libbpfgo-beginners

 

GitHub - lizrice/libbpfgo-beginners: Basic eBPF examples in Golang using libbpfgo

Basic eBPF examples in Golang using libbpfgo. Contribute to lizrice/libbpfgo-beginners development by creating an account on GitHub.

github.com

 

 

 

책 저자 - Liz Rice

https://www.lizrice.com/#6

 

Liz Rice - containers, eBPF, security, Kubernetes, software engineering

Liz Rice is a software engineer and entrepreneur based in London, UK. As Chief Open Source Officer for eBPF experts Isovalent, she travels the world speaking about containers, security and distributed systems. Her programming language of choice is Golang,

www.lizrice.com

 

 

 

 

eBPF - Official Web Site

 

https://ebpf.io/get-started/

 

eBPF - Introduction, Tutorials & Community Resources

eBPF is a revolutionary technology that can run sandboxed programs in the Linux kernel without changing kernel source code or loading a kernel module.

ebpf.io

 

 

 

 

 

 

 

 

 

 

 

 

반응형
작성일: 2024년 12월 13일

 

기업형 VPN을 사용할 일이 생겨서 어떤 거를 써야 하나 고민하다가, 최근에 보편적으로 어떤 제품이 많이 쓰이는지 조사해봤다.

간단하게 요약하면, Cisco AnyConnect 제품이 독보적으로 가장 많이 사용된다.
그리고 회사별로 보면, Cisco 제품군이 전체 VPN 시장의 54%를 차지한다.
(데이터 출처:  DataNeeds, 2023)

 

  • Cisco AnyConnect: 29%  (2,467 기업에서 사용중)
  • Cisco VPN: 25%  (2,125 기업에서 사용중)
  • Juniper VPN: 10%  (887개 기업에서 사용중)
  • Ctric Gateway: 8%  (670개 기업에서 사용중)
  • OpenVPN: 7%  (583개 기업에서 사용중)
  • CheckPoint VPN: 3%  (228개 기업에서 사용중)
  • NCP IPsec VPN: 2% 

 

시장 점유율이 높은 Cisco AnyConnect의 운영 매뉴얼, API 가이드를 보니까 아주 잘 만들어져 있었다.

왜 Cisco AnyConnect 제품이 잘 팔리는지 알 수 있었다.

그런데 가격이 넘사벽이다. ㅠㅠ

IPsec tunnel에서 1Gbps 대역 효과를 얻기 위해서 대략 5100만원 정도를 써야 한다.

(이 5100만원이라는 것도 순수 장비 구입비만.. ㅠㅠ  기술지원 비용까지 합하면, 실제 지출되는 금액은 훨씬 커진다.)

회사가 여러 빌딩이나 지사로 나누어져 있으면, VPN 장비를 여러 개 구입해야 하니까 비용은 수억원 정도 지출될듯.

 

반응형
작성일: 2024년 11월 13일

 

 

Intel Xeon CPU의 다양한 제품 라이업을 보면, 어느 제품을 구입해서 써야 할지 막막할 때가 있다.

이럴 때, 각 CPU 모델의 성능 측정 값을 알면 딱 좋은데, 다행스럽게도 Intel이 제공하는 CPU 모델별 성능 정보 테이블이 있다. 

 

https://www.intel.com/content/dam/support/us/en/documents/processors/APP-for-Intel-Xeon-Processors.pdf

 

 

참고 정보

Intel은 MIPS 정보는 제공하지 않고 GFLOPS, APP 성능 지표만 제공한다고 한다. (아래 웹 사이트에 자세한 정보가 있다)

https://www.intel.com/content/www/us/en/support/articles/000057052/processors/intel-xeon-processors.html

 

What Is MIPS (Million Instructions Per Second) Number for Intel®...

Performance information available for Intel® Xeon® Processors

www.intel.com

 

반응형

작성일: 2024년 8월 7일

 

 

HW, SW를 개발해서 고객사에 납품하는 회사라면, BMT, SVT, DVT, CVT, UAT 등과 같은 Test  관련 용어를 자주 사용할 것이다.

그런데 내가 이 용어가 어떤 단어의 축약어인지 몰라서 같이 일하는 동료에게 물어보니..

이 축약된 용어의 Full Name과 정확한 의미를 모르더라... ㅠㅠ

그래서 여기 저기 찾아서 메모를 해본다.

 


 

BMT ( Benchmark Test )

고객이 요구하는 기능과 성능/용량이 제공 가능한지 가늠해보기 위한 벤치마크 테스트

 

 

SVT ( System Validation Test,   Supplier[Self] Validation Test)

일반적으로 SI, IT업계에서는 HW 같은 물리 장비를 고객사 사이트에 설치하고, 기능 및 성능 검증.

(HW, OS, Platform를 고객사 사이트에 납품 및 설치하고 잘 동작하는지 테스트하는 것을 SVT라고 한다.)

그런데, 내가 일하는 네트워크 산업 분야에서는 Supplier[Self] Validation Test로 사용하는 경우가 있다.

즉, 개발/공급하는 회사가 고객사에 시스템 및 Software를 납품하기 전 단계에서 자체적으로 종합 테스트하는 것을 일컫는다.

 

 

DVT ( Developer Validation Test)

내가 일하는 통신 업계에서는 Developer Validation 이라고 하는데, 다른 산업에서는 Design Validation이라고 하는 것 같다.

 

 

CVT ( Customer Validation Test )

고객이 직접 인수할 장비의 기능과 품질을 검증한다. (물론 공급사 담당자를 옆에 앉혀 놓고 하는 것이 일발적인 업무 프로세스이다.)

 

UAT ( 인수자(Underwriter?) Validation Test )

인수자(고객사)가 테스트를 한다는 것은 상용 서비스를 가정하고 테스트하는 것이기 때문에 실제 상용 환경도 100% 동일한 환경에서 기능, 성능, 용량 검증 테스트한다.

 

 

EVT ( Engineering Validation Test )

과부하, 과용량 상태를 만들어서 문제 없이 기능, 서비스(즉, Feature)가 제공되는지 확인한다.

Stress를 팍팍 주면서 Aging Test(에이징, 장시간 테스트)를 하는 것이 일반적이다.

 

 


 

 

 

 

##
## 채용 관련 글
##
제가 일하고 있는 기업 부설연구소에서 저와 같이 연구/개발할 동료를 찾고 있습니다.
(이곳은 개인 블로그라서 기업 이름은 기재하지 않겠습니다. E-mail로 문의주시면 자세한 정보를 공유하겠습니다.)

근무지 위치:
  서울시 서초구 서초동, 3호선 남부터미널역 근처 (전철역 출구에서 회사 입구까지 도보로 328m)
필요한 지식 (아래 내용 중에서 70% 정도를 미리 알고 있다면 빠르게 협업할 수 있음):
  - 운영체제 (학부 3~4학년 때, 컴퓨터공학 운영체제 과목에서 배운 지식 수준):
    예를 들어, Processor, Process 생성(Fork)/종료, Memory, 동시성, 병렬처리, OS kernel driver  
  - Linux OS에서 IPC 구현이 가능
    예를 들어, MSGQ, SHM, Named PIPE 등 활용하여 Process간 Comm.하는 기능 구현이 가능하면 됨. 
  - Algorithm(C언어, C++ 언어로 구현 가능해야 함)
    예를 들어, Hashtable, B-Tree, Qsort 정도를 C 또는 C++로 구현할 수 있을 정도 
  - Network 패킷 처리 지식(Layer 2 ~ 4, Layer 7)
    예를 들어, DHCP Server/Client의 주요 Feature를 구현할 정도의 능력이 있으면 됨.
  - Netfilter, eBPF 등 (IP packet hooking, ethernet packet 처리, UDP/TCP packet 처리)
  - IETF RFC 문서를 잘 읽고 이해하는 능력 ^^
  # 위에 열거한 내용 외에도 제가 여기 블로그에 적은 내용들이 대부분 업무하면서 관련이 있는 주제를 기록한 것이라서
  # 이 블로그에 있는 내용들을 잘 알고 있다면, 저희 연구소에 와서 연구/개발 업무를 수행함에 있어서 어려움이 없을 겁니다.
회사에서 사용하는 프로그래밍 언어:
  - 프로그래밍 언어: C, C++, Go
    (참고: 아직 연구소 동료들이 Rust를 사용하진 않습니다만, 새 언어로써 Rust를 사용하는 것을 고려하는 중)
근무 시간:
  - 출근: 8~10시 사이에서 자유롭게 선택
  - 퇴근: 8시간 근무 후 퇴근 (오후 5시 ~ 7시 사이)
  - 야근 여부: 거의 없음 (내 경우, 올해 상반기 6개월간 7시 이후에 퇴근한 경우가 2회 있었음)
  - 회식 여부: 자유 (1년에 2회 정도 회식하는데, 본인이 집에 가고 싶으면 회식에 안 감. 왜 참석 안 하는지 묻지도 않음)
외근 여부:
  - 신규 프로젝트 멤버 -> 외근 전혀 하지 않음 (나는 신규 프로젝트만 참여해서 지난 1년 동안 한번도 외근 없었음)
  - 상용 프로젝트 멤버 -> 1년에 5회 미만 정도로 외근
팀 워크샵 여부:
  - 팀 워크샵 자체를 진행하지 않음. (워크샵 참석하는 거 싫어하는 개발자 환영 ^^)
연락처:
  - "sejong.jeonjo@gmail.com"  # 궁금한 점은 이 연락처로 문의주세요.
  - 블로그 비밀 댓글 (제가 하루에 한번씩 댓글 확인하고 있음)
원하는 인재상:
  - 우리 부설연구소는 "긴 호흡으로 프로젝트를 진행"하기 때문에 최소 2년간 한 가지 주제를 꾸준하게 연구/개발할 수 있는 개발자를 원함.
  - 우리 부설연구소는 자주적으로 연구 주제를 찾아서 업무를 하기 때문에 능동적으로 생각하고 행동하는 동료를 원함.
  - 차분하게 연구 주제에 몰입하고, 해법을 찾는 것을 즐기는 사람.
내가 느끼는 우리 연구소의 장점:
  - 갑/을 관계가 없음. (제가 근무하고 있는 연구소는 SI업종이 아니라서 갑/을 회사 개념이 없음)
  - 연구소 자체적으로 연구 주제를 발굴하고 시스템을 개발하기 때문에 개발 일정에 대한 스트레스가 적음
  - 빌딩 전체를 우리 회사가 사용하므로 분위기가 산만하지 않음.
  - 근처에 예술의전당, 우면산 둘레길이 있어서 점심 시간에 산책하기 좋음 ^^
  - 연구소 동료들 매너가 Good (2년간 일하면서 한번도 감정에 스크레치 생기거나 얼굴 붉히며 싸운 적 없음 ^^)
반응형
작성일: 2024년 7월 31일

 

 

CASE : Cloud Access Security Broker

DEM : Digital Experience Monitoring

DLP : Data Loss Prevention

FWaaS : Firewall as a Service

NESaaS : Network Edge Security as a Service

PoP : Point of Presence (접속점)

SASE : Secure Access Service Edge

SD-WAN : Software-Define Wide Area Network

SSE : Security Service Edge

SWG : Secure Web Gateway

WAF : Web Application Firewall

VPN : Virtual Private Network

ZTNA : Zero Trust Network Access

 

 

 

 

 

 

 

 

 

 

 


 

반응형
작성일: 2024년 7월 30일

 

금융 거래를 하거나 중요한 시스템에 로그인할 때 OTP(One Time Pasword)를 종종 사용한다.

OTP를 사용하는 사람은 OTP의 동작 원리를 몰라도 문제가 없지만,

사용자 인증 시스템을 개발/구현하는 사람은 OTP의 동작 원리를 잘 알아야 한다.

 

IETF RFC 문서에 명확하게 OTP(HOTP, TOTP)에 관해서 기술하고 있기 때문에 RFP 문서를 읽는 것이 제일 확인한 스터디 방법이다.

 

 

ICT 분야에서는 어떤 공부를 하든 RFC를 먼저 열람하는 것이 제일 확실하다.
괜히 어설프게 인터넷에 떠도는 자료를 읽고 공부하다보면 나중에 업무할 때 논쟁거리를 만들게 되니까 ^^
예를 들어서, TOTP에 관해서 연동 블록 개발자간 박터지게 싸웠는데 그 중에서 한명이 인터넷에 떠도는 사이비 문서를 읽고 말싸움을 한 것이라면 얼마나 쪽팔리겠는가.
(솔직히, 이런 경우에 쪽팔려하는 개발자라면 발전할 가능성이라도 있지만, 그냥 모르는 것을 모르는대로 넘어간다면 영원히 사이비 개발자로 남을 것이다)

 

IETF RFC 문서에 너무 명확하고 쉽게 설명이 있으니까, 여기서 그 내용을 중복으로 설명할 필요는 없을 것 같고...

그냥 어떤 문서를 읽고, 어떤 예제 소스 코드를 보면 좋은지 정도만 이 블로그에서 설명하도록 하겠다.

 

OTP는 HOTP(HMAC-Based One-Time Password)와 TOTP(Time-Based One-Time Password)로 구분해서 구현할 수 있다.

IETF에서 표준이 된 순서로 본다면, HOTP -> TOTP이다.

즉, 동일한 인증 기술의 구현이라는 목표를 가지고

  • HOTP가 2005년 12월에 표준이 되었고
  • TOTP가 2011년 05월에 표준이 되었다.

IETF RFC 문서 정보

HOTP:  https://datatracker.ietf.org/doc/html/rfc4226  (2005년 12월 표준 확정)

TOTP:  https://datatracker.ietf.org/doc/html/rfc6238   (2011년 05월 표준 확정)

 

대부분의 기술이 그렇듯이 동일한 목적을 두고 개발된 기술이라면, 뒤에 개발된 기술(표준안)이 더 좋은 것이다.

설계/개발(구현)에 많은 시간을 투자할 상황이 아니라면 TOTP만 고려해도 별 문제 없다는 뜻이다.

그리고 두 가지 OTP에 대한 RFC를 잘 읽어보면, HOTP와 TOTP가 비슷해서 TOTP로 인증 체계를 구현하고 나면 나중에 HOTP를 추가로 기능 추가해도 큰 공수가 들어가지 않는다.

 

 

OTP, HOTP, TOTP 예제 소스 코드  (Java)

위 IETF RFC 문서의 뒷 부분에 JAVA로 구현된 예제 소스 코드가 있다.

논리적인 pseudocode가 아니라 실제로 동작하는 Java 소스 코드이다.

(실제로 문서에 있는 소스 코드를 복사해서 터미널에 붙여서 javac로 컴파일하고, java runtime으로 돌려봤는데 아주 깔끔하게 동작한다)

그리고 RFC 문서에 있는 동일한 Java 코드가 Github에도 있다.

 

Github 주소:  https://github.com/gityf/java_demo/blob/master/demo/src/main/java/org/wyf/otp/TOTP.java 

 

`git clone ....`해서 돌려봤는데, 깔끔하게 잘 돌아간다 ^^

 

 

 

OTP, HOTP, TOTP 예제 소스 코드  (Go)

Go 언어로 구현 및 테스트해보고 싶다면, 아래의 Go source code를 추천한다.

 

Github 주소:  https://github.com/pquerna/otp

 

이 Go 패키지는 재미있게도 QR-code를 이용해서 OTP 값을 출력해준다.

스마트폰으로 QR-code를 찍어서 스마트폰 화면에 보이는 숫자를 iTerm 터미널에 입력하면 OTP를 이용한 인증 통과 여부를 알려준다.

 

 

Python에서는 OTP 인증 코드를 작성하기가 더 쉽다.

아래 python document를 보면서 따라하면 끝 ^^

https://pyauth.github.io/pyotp/

 

 


 

+ Recent posts