전체 글
-
IoT Edge 컴퓨팅 오픈소스 프레임워크 - Edgex Foundry개발 2025. 8. 7. 20:01
Edgex Foundry는 리눅스 재단에서 운영 중인 산업용 IoT Edge 컴퓨팅을 위한 공통 프레임 워크이다.에지 컴퓨팅(edge computing)이란 위키에 의하면 '응답 시간을 개선하고 대역폭을 절약하기 위해 필요한 곳에 연산과 데이터 스토리지를 도입하는 분산 컴퓨팅 패러다임의 하나'라고 명시되어 있다.쉽게 말해 엔드 노드들로부터 발생된 데이터 처리를 기존에 클라우드나 중앙 서버에서 담당했던 것과 달리 현장에 에지라는 로컬 서버를 두고 에 여기에 인가함으로써 더 신속한 이슈 대응과 현장 중심의 서비스 운용을 가능하게 한다고 보면 된다. 하드웨어들이 저전력, 소형화, 고성능화됨에 따라 에지 컴퓨팅 산업 또한 이에 힘 입어 날로 발전하고 있는 추세로 보인다.Edgex Foundry는 이러한 에지 ..
-
알아두면 유용한 정렬 알고리즘개발 2025. 8. 7. 19:28
Selection Sort(선택 정렬)Selection Sort는 첫 번째부터 끝까지 훑어서 가장 작은게 1번째, 2번째부터 끝까지 훑어서 가장 작은게 2번째 이런식으로 (n-1)번을 반복하는 방식으로 시간 복잡도는 O(n(n-1)/2)다.파생형으로 Double Selection Sort(이중 선택 정렬)도 있다. 이 방법을 사용하면 반복 횟수가 반으로 줄어든다.Insertion Sort(삽입 정렬)Insertion Sort는 n번째 원소를 1번째부터 n-1번째까지 비교해 끼워넣고 그 뒤의 원소들을 한 칸씩 뒤로 밀어내는 방식으로 시간복잡도는 O(n^2)이다.평균적으로 O(n^2) 정렬 중에는 빠른 편이지만 데이터가 한쪽에 치우쳤을 경우 비교 횟수와 이동이 크게 차이난다.하지만 이미 정렬 되어 있는 리스..
-
Go 언어(Golang)개발 2025. 8. 7. 19:26
Go 언어란?C언어의 모체가 된 B언어와 유닉스의 개발자인 켄 톰슨이 설계에 참여해 구글이 개발한 프로그래밍 언어빠른 성능, 안정성, 편의성, 쉬운 프로그래밍을 목표로 개발된 범용 프로그래밍 언어Go 언어의 특징정적 타입, 강 타입컴파일 언어가비지 컬렉션병행성(Concurrency)멀티코어 환경 지원모듈화 및 패키지 시스템빠른 컴파일 속도Go 언어의 장점네이티브 바이너리형식가상 머신 위에서 돌아가는 Java, C#에 비해 성능이 좋음컴파일 시간C, C++ 는 헤더파일이 많아서 컴파일 속도가 느림, 헤더파일 의존 관계도 복잡Go는 헤더파일이 없음, 소스 코드를 패키지화하여 변경된 부분만 컴파일하므로 속도가 빠름, 문법적으로도 복잡한 요소를 최대한 줄여 컴파일 속도에 유리하게 설계언어적 문법 간결, 컴파일 ..
-
TCP 소켓 Blocking / Non-blocking개발 2025. 8. 7. 19:03
TCP 소켓의 Blocking 모드는 소켓이 블록 되는 것을 의미한다.소켓이 블록 상태이면 블록이 풀리기 전까진 다음 처리를 진행할 수 없다.애플리케이션이 싱글스레드 모델이라면 블록 상태에서 문제가 생겼을 경우 다음 처리를 진행할 수 없기 때문에 문제가 될 수 있다.Non-blocking 모드는 Blocking 소켓의 단점을 보완하기 위해 등장한 개념으로 소켓이 블록 되지 않고 즉시 소켓의 상태를 반환하게 된다.이렇게 되면 소켓의 상태를 주기적으로 체크하고 다른 처리를 진행할 수 있게 된다.기본적으로 소켓은 블로킹 모드로 동작하는데 fcntl 함수를 이용하면 지정한 fd를 Non-blocking 소켓으로 변경할 수 있다.다음은 fcntl로 소켓 fd를 Non-blocking 모드로 설정하는 방법이다.#i..
-
TCP 데이터 보장 원리에 대해 파헤쳐보기 2 - SO_LINGER개발 2025. 8. 7. 18:51
SO_LINGER는 C에서 제공되는 소켓 옵션이다. SO_LINGER는 소켓을 close 했을 때 전송되지 않은 데이터를 어떻게 처리할 것인지에 대한 처리 규칙이다.이전 포스팅 분석에 의하면 TCP는 연결이 끊긴 이후에도 일정 시간 동안 데이터를 보장해주도록 동작하는 것을 알 수 있다.여기에 SO_LINGER를 활용하면 보장에 대한 시간을 조정할 수 있고 즉시 데이터를 버릴 수 도있다.다음은 SO_LINGER 옵션에 사용되는 데이터 구조체이다.struct linger{ int l_onoff; int l_linger;}l_onoff : Linger 옵션을 활성화할 것인지 비 활성화할 것인지에 대한 플래그l_linger : Linger 옵션이 활성화되었을 때 기다리는 시간위 두 개의 멤버 변수의 값에..
-
TCP 데이터 보장 원리에 대해 파헤쳐보기 1개발 2025. 8. 5. 16:56
TCP는 데이터의 전송을 보장하는 신뢰성 있는 프로토콜이다.호스트 간에 갑작스럽게 연결 종료가 되었다거나 전송 지연 등으로 인해 데이터의 유실 소지가 있는 네트워크 상황에서 TCP는 내부적으로 어떤 원리로 데이터를 보장해주는지 관련 테스트를 통해 알아보기로 했다.TCP 상태테스트를 진행하기에 앞서 TCP 상태에 대해 알아보겠다.각 상태들은 다음을 의미한다.LISTEN : 서버가 소켓을 bind 하고 클라이언트의 접속 요청을 기다린다.SYN_SENT : 클라이언트가 서버로 접속 요청을 한다.SYN_RCVD : 서버가 클라이언트로부터 접속 요청을 받고 클라이언트에게 접속 요청 응답한다.ESTABLISHED : 클라이언트와 서버가 서로 세션 확립이 이루어졌다.FIN_WAIT_1 : 접속을 끊기 위해 소켓을 c..
-
Apache JMeter 활용 해보기개발 2022. 3. 13. 17:37
웹 패킷 분석과 서버 성능 테스트를 할 일이 생겼다. 클라이언트 시뮬레이터가 필요해서 알아보다 아파치에서 제공하는 JMeter라는 툴을 알게되었다. JMeter를 활용하면 다량의 가상 클라이언트 세션을 만들고 다양한 테스트를 진행해볼 수 있다. 사용해보면서 알게된 몇 가지 기능들에 대해 정리해보았다. 설치/실행(윈도우) 공식 홈페이지 http://jmeter.apache.org/download_jmeter.cgi 에서 압축 파일을 다운로드 받는다. 압축을 풀고 bin 디렉토리의 jmeter.bat 파일을 실행한다. HTTP 요청 테스트 1. 쓰레드 그룹 설정 JMeter에서는 쓰레드를 이용해 클라이언트 세션을 만들어낼 수 있다. 쓰레드를 만들기 위해서는 먼저 쓰레드 그룹을 생성해야 한다. JMeter를 ..