로봇운영 소프트웨어로봇 운영 소프트웨어 개발서버 연동 소프트웨어 개발
출제기준 좌표1·1·2·1
1과목 · 로봇운영 소프트웨어

서버 프로그램

로봇 운영 소프트웨어 개발서버 연동 소프트웨어 개발
# 로봇운영소프트웨어
01

📌 개요

  • 로봇 한 대: 제어기와 티치 펜던트로 충분 / 여러 대 관리·데이터 수집·원격 서비스 → 서버(Server) 필요
  • 서버 프로그램 = 로봇(클라이언트)들의 접속을 받아 상태 수집·작업 배분·데이터 저장·제공하는 중심 역할
  • 출제 포인트: 서버-클라이언트 모델, TCP 서버 소켓의 함수 호출 순서(socket→bind→listen→accept), 동시성 처리 방식, HTTP/REST·WebSocket·MQTT 같은 응용 프로토콜의 특징
02

📖 핵심 개념

서버-클라이언트 모델

서버-클라이언트(Server-Client) 모델은 네트워크 소프트웨어의 가장 기본적인 역할 분담 구조다.

  • 서버(Server): 서비스를 제공하는 쪽. 정해진 주소(IP)와 포트(Port)에서 기다리다가(Listen) 요청이 오면 응답한다. 항상 켜져 있어야 한다

  • 클라이언트(Client): 서비스를 요청하는 쪽. 필요할 때 서버에 접속(Connect) 해서 요청하고 응답을 받는다 (→ 클라이언트 프로그램)

  • 로봇 운영에서는 보통 로봇(또는 로봇 측 에이전트)이 클라이언트, 운영 센터의 컴퓨터가 서버

  • 이유: 방화벽 안의 로봇이 바깥의 서버로 "먼저 접속해 나가는" 구조가 네트워크 설정상 유리하기 때문

로봇 운영 서버가 하는 일

  • 로봇 등록·인증: 어떤 로봇이 접속했는지 식별하고 권한 확인 (→ 로봇 보안)
  • 상태 수집·모니터링: 여러 로봇의 상태·알람을 모아 통합 대시보드 제공 (→ 로봇 모니터링 프로그램)
  • 작업 관리(Task Management): 작업 지시 전달, 스케줄링, 다중 로봇 간 작업 배분
  • 데이터 저장·분석: 주행 로그, 센서 데이터, 생산 실적을 DB에 축적하고 분석
  • 소프트웨어 배포: 원격 업데이트(OTA, Over-The-Air) — 새 버전 프로그램·설정을 로봇들에 배포
  • 외부 서비스 연계: 생산관리시스템(MES)·창고관리시스템(WMS)·클라우드와 연동
클라우드 로보틱스(Cloud Robotics)

무거운 연산(지도 갱신, AI 추론, 빅데이터 분석)을 로봇이 아닌 클라우드 서버에 맡기고, 로봇은 결과만 받아 쓰는 구조. 로봇 개체의 하드웨어 부담을 줄이고, 여러 로봇이 학습 결과·지도를 공유할 수 있다. 대신 네트워크 지연·단절에 대한 대비가 필요하다.

서버 프로그램의 계층 구조

일반적인 운영 서버는 3계층(3-Tier) 으로 구성된다.

계층 역할
프레젠테이션 계층 사용자에게 화면 제공 (웹 서버) 대시보드 웹 페이지
애플리케이션 계층 업무 로직 처리 (애플리케이션 서버, WAS) 작업 배분, 상태 판정
데이터 계층 데이터 저장·조회 (DB 서버) 로봇 상태 이력, 작업 기록

계층을 나누면 각 부분을 독립적으로 개발·확장·교체할 수 있다 (→ 계층형 아키텍처).

TCP 서버의 소켓 프로그래밍 흐름

  • 소켓(Socket) = 네트워크 통신의 프로그래밍 접점(끝점)
  • TCP 서버는 다음 함수 호출 순서를 따른다 — 시험 단골이므로 순서를 암기한다.
  1. socket() — 소켓 생성
  2. bind() — 소켓에 자기 IP 주소·포트 번호를 결합
  3. listen() — 접속 대기 상태로 전환 (대기 큐 준비)
  4. accept() — 클라이언트의 접속을 수락 → 통신용 소켓이 새로 생성
  5. send() / recv() — 데이터 송수신
  6. close() — 연결 종료

동시성 처리 — 여러 클라이언트를 어떻게 받나

  • 로봇 10대가 동시에 접속하는데 서버가 한 번에 하나씩만 처리하면 나머지는 기다려야 함 → 해결 방식:

  • 반복(Iterative) 서버: 한 클라이언트를 끝까지 처리하고 다음을 받는다 — 간단하지만 동시 서비스 불가

  • 멀티프로세스(Multi-process): 접속마다 프로세스를 복제(fork) — 격리성이 좋지만 생성 비용·메모리가 크다

  • 멀티스레드(Multi-thread): 접속마다 스레드 할당 — 가볍지만 공유 자원 동기화 필요 (→ 미들웨어 프로세스 관리)

  • I/O 멀티플렉싱(Multiplexing): select/epoll로 하나의 스레드가 여러 소켓을 감시 — 접속 수가 많을 때 효율적

  • 비동기(Asynchronous) I/O: 요청을 걸어 두고 완료 통지를 받아 처리 — 이벤트 루프 기반 고성능 서버

응용 프로토콜 — HTTP/REST, WebSocket, MQTT

프로토콜 통신 패턴 특징 · 로봇 운영에서의 용도
HTTP + REST API 요청-응답 (클라이언트가 먼저) 자원(URI)에 GET/POST/PUT/DELETE 메서드로 접근하는 표준 API 방식. 설정 조회, 작업 지시, 이력 조회
WebSocket 양방향 상시 연결 HTTP로 시작해 연결을 유지, 서버도 먼저 보낼 수 있음. 실시간 대시보드 갱신, 원격 조작
MQTT 발행-구독 (브로커 경유) 경량 IoT 프로토콜. 로봇이 토픽에 상태를 발행하면 구독자들이 받음. 다수 장치 상태 수집 (→ 로봇과 IoT디바이스 연동)
  • REST(Representational State Transfer): "자원을 URI로 표현하고, HTTP 메서드로 행위를 표현"하는 API 설계 원칙. 예: GET /robots/7/status = 7번 로봇의 상태 조회
  • MQTT의 브로커(Broker): 발행자와 구독자 사이의 중계 서버. 발행자와 구독자가 서로를 몰라도 되고(느슨한 결합), QoS 레벨(0: 최대 한 번, 1: 최소 한 번, 2: 정확히 한 번)로 전달 신뢰성을 선택한다
03

📊 다이어그램 · 수식

TCP 서버-클라이언트 소켓 흐름

DIAGRAM
sequenceDiagram
    participant C as 클라이언트 (로봇)
    participant S as 서버 (운영 센터)
    Note over S: socket() → bind() → listen()
    Note over C: socket()
    C->>S: connect() — 접속 요청
    S->>C: accept() — 수락 (통신용 소켓 생성)
    loop 데이터 교환
        C->>S: send() 상태 보고
        S->>C: send() 작업 지시
    end
    C->>S: close()

로봇 운영 서버 구조 (3계층 + 다중 로봇)

DIAGRAM
graph TD
    R1["로봇 1"] --> B["서버 접속 계층
(소켓·MQTT 브로커·REST)"] R2["로봇 2"] --> B R3["로봇 n"] --> B B --> APP["애플리케이션 계층
작업 배분·상태 판정·OTA"] APP --> DB[("데이터 계층
상태 이력·작업 기록")] APP --> WEB["프레젠테이션 계층
웹 대시보드"] WEB --> U["운영자 (브라우저)"]
04

🎯 핵심 요약 · 암기 포인트

익힘 0 / 11카드를 눌러 뒤집고, 앞면에서 아는지 표시하세요.
Q · 1
서버와 클라이언트의 역할 차이는?
A
서버는 정해진 주소·포트에서 대기하며 서비스를 제공, 클라이언트는 필요할 때 접속해 서비스를 요청
Q · 2
TCP 서버의 소켓 함수 호출 순서는?
A
socket → bind → listen → accept → send/recv → close
Q · 3
TCP 클라이언트의 소켓 함수 호출 순서는?
A
socket → connect → send/recv → close
Q · 4
bind() 함수의 역할은?
A
생성한 소켓에 서버 자신의 IP 주소와 포트 번호를 결합
Q · 5
accept()가 하는 일은?
A
클라이언트의 접속 요청을 수락하고 통신용 소켓을 새로 생성
Q · 6
I/O 멀티플렉싱이란?
A
select/epoll 등으로 하나의 스레드가 여러 소켓을 동시에 감시하는 동시성 처리 방식
Q · 7
REST API의 설계 원칙은?
A
자원을 URI로 표현하고 행위를 HTTP 메서드(GET·POST·PUT·DELETE)로 표현
Q · 8
MQTT의 통신 구조는?
A
브로커(중계 서버)를 사이에 두고 발행자가 토픽에 발행, 구독자가 토픽을 구독하는 발행-구독 구조
Q · 9
MQTT QoS 0·1·2의 의미는?
A
0 = 최대 한 번(전달 보장 없음), 1 = 최소 한 번(중복 가능), 2 = 정확히 한 번
Q · 10
클라우드 로보틱스란?
A
무거운 연산을 클라우드 서버에 맡기고 로봇은 결과만 받아 쓰며, 여러 로봇이 데이터를 공유하는 구조
Q · 11
OTA(Over-The-Air) 업데이트란?
A
네트워크를 통해 원격으로 로봇의 소프트웨어·설정을 배포·갱신하는 것
05

✏️ 예상문제

1. TCP 서버 프로그램의 소켓 함수 호출 순서로 옳은 것은?

① socket → listen → bind → accept ② socket → bind → listen → accept ③ socket → accept → bind → listen ④ socket → connect → send → close

정답 및 해설

정답: ② 서버는 소켓 생성(socket) → 주소·포트 결합(bind) → 대기 전환(listen) → 접속 수락(accept) 순이다. ④는 클라이언트의 호출 순서다.

2. MQTT 프로토콜에 대한 설명으로 옳지 않은 것은?

① 발행-구독(Publish-Subscribe) 구조를 사용한다 ② 브로커가 발행자와 구독자 사이를 중계한다 ③ 발행자는 모든 구독자의 주소를 알고 있어야 한다 ④ QoS 레벨로 전달 신뢰성을 선택할 수 있다

정답 및 해설

정답: ③ 발행-구독 구조의 장점이 바로 느슨한 결합이다. 발행자는 토픽에 발행만 하면 되고, 누가 구독하는지 알 필요가 없다. 중계는 브로커가 담당한다.

3. 하나의 스레드가 select/epoll로 여러 소켓을 동시에 감시하며 처리하는 서버 동시성 기법은?

① 반복(Iterative) 서버 ② 멀티프로세스 서버 ③ 멀티스레드 서버 ④ I/O 멀티플렉싱

정답 및 해설

정답: ④ I/O 멀티플렉싱은 소켓마다 프로세스·스레드를 만들지 않고 하나의 실행 흐름이 여러 소켓의 이벤트를 감시한다. 접속 수가 많은 서버에서 자원 효율이 좋다.

4. REST API 설계에서 "7번 로봇의 상태를 조회"하는 요청으로 가장 적절한 것은?

POST /robots/7/statusGET /robots/7/statusDELETE /robots/7/statusPUT /getRobotStatus?id=7

정답 및 해설

정답: ② REST에서 조회는 GET 메서드를 쓰고, 자원은 URI로 표현한다. POST는 생성, PUT은 수정, DELETE는 삭제에 해당한다. ④처럼 행위를 URI에 동사로 넣는 것은 REST 원칙에 어긋난다.

5. 웹 대시보드에서 로봇 상태 변화를 서버가 먼저 밀어서(push) 실시간 갱신하려 한다. 가장 적합한 프로토콜은?

① 단순 HTTP 요청-응답 ② FTP ③ WebSocket ④ SMTP

정답 및 해설

정답: ③ 단순 HTTP는 클라이언트가 요청해야만 응답할 수 있다. WebSocket은 한 번 연결을 맺으면 양방향 상시 통신이 가능해 서버가 먼저 데이터를 보낼 수 있다. FTP는 파일 전송, SMTP는 메일 전송 프로토콜이다.

06

🔗 관련 노트

로봇소프트웨어개발기사 필기 · 학습 교재출제기준 2025.1.1 – 2027.12.31