헷갈리는 IT 용어 #01 알고리즘·프로그램·모듈·모델은 무엇이 다를까?


비슷하게 들리는 IT 용어의 차이

IT 관련 글을 읽다 보면 알고리즘, 프로그램, 모듈, 모델이라는 단어가 자주 등장한다.

각각의 뜻만 보면 그렇게 어려운 용어는 아니다.

알고리즘은 문제를 해결하는 방법이고, 프로그램은 컴퓨터에서 실행되는 코드이며, 모듈은 프로그램을 구성하는 단위다. 모델은 입력을 받아 어떤 결과를 만드는 구조라고 설명할 수 있다.

그런데 이 단어들이 한 문장 안에 같이 등장하기 시작하면 이야기가 조금 달라진다.

프로그램 안에 모듈이 있다는 것은 알겠는데 모델은 어디에 들어갈까?
알고리즘도 입력을 받아 결과를 계산하는데 모델과는 무엇이 다를까?
모듈 안에는 항상 모델이 들어가는 걸까?

이런 혼란이 생기는 이유는 네 용어가 같은 기준으로 나뉜 개념이 아니기 때문이다.

프로그램은 전체 실행을 이야기할 때 쓰이고, 모듈은 기능을 어떻게 나누었는지를 설명할 때 쓰인다. 모델은 특정 입력에서 특정 결과를 만들어내는 구조에 가깝고, 알고리즘은 문제를 어떤 방법으로 처리할 것인지를 설명한다.

그래서 네 단어를 사전식 정의로 따로 외우는 것보다 실제 프로그램 하나를 놓고 살펴보는 편이 훨씬 이해하기 쉽다.

내비게이션을 예로 들어보자.


내비게이션은 서울에서 부산까지 어떻게 길을 찾아줄까?

사용자가 내비게이션에 목적지를 입력했다고 생각해보자.

INPUT : 서울 → 부산

화면에 서울과 부산을 입력했다고 곧바로 추천 경로가 나타나는 것은 아니다.

내부에서는 여러 작업이 이어진다.

먼저 현재 위치가 어디인지 확인해야 한다. 목적지도 정확히 찾아야 한다. 도로 상황을 확인하고 사고나 통제 정보도 살펴봐야 한다.

단순히 현재 교통상황만으로 충분하지 않을 수도 있다.

지금은 원활한 도로라도 한 시간 뒤에는 정체가 심해질 수 있고, 두 경로의 거리가 비슷하더라도 실제 도착시간은 크게 달라질 수 있기 때문이다.

이럴 때는 앞으로의 교통량이나 예상 도착시간을 계산하는 기능이 필요해진다.

필요한 정보가 준비되면 여러 후보 경로를 비교해 어떤 길을 추천할지 계산한다.

마지막으로 자동차, 대중교통, 도보, 자전거 같은 이동수단별 경로를 화면에 보여준다.

OUTPUT : 이동수단별 추천 경로

이 과정을 조금 더 뜯어보면 프로그램, 모듈, 모델, 알고리즘이 각각 어디에서 등장하는지 보이기 시작한다.


프로그램은 이 모든 과정이 실제로 돌아가게 만든다

먼저 프로그램(Program)이다.

프로그램은 컴퓨터가 실제 작업을 수행할 수 있도록 작성된 코드와 명령의 집합이다.

내비게이션을 사용하면 사용자의 입력을 받고, 필요한 기능을 호출하고, 여러 계산을 수행한 뒤 그 결과를 다시 화면에 표시한다.

현재 위치를 확인하는 기능만 실행한다고 내비게이션 프로그램이 되는 것은 아니다.

목적지를 검색하고, 지도 정보를 불러오고, 교통정보를 확인하고, 경로를 계산하고, 최종 결과를 사용자에게 보여주는 과정까지 연결되어 실제로 동작해야 한다.

계산기 프로그램도 마찬가지다.

사용자가 숫자와 연산자를 입력하면 입력값을 확인하고 계산한 뒤 결과를 화면에 보여준다.

문서 작성 프로그램이라면 키보드 입력을 받아 글자를 표시하고, 문서를 저장하고, 다시 불러오고, 인쇄 같은 기능도 실행한다.

프로그램이라는 말을 이해할 때는 무엇이 실제로 실행되고 있는가를 생각하면 된다.

프로그램 = 여러 기능과 처리를 연결해 전체 작업이 실제로 동작하도록 만든 것


모듈은 프로그램 안의 일을 나눠 맡는다

내비게이션처럼 기능이 많은 프로그램을 하나의 거대한 코드 덩어리로만 만들면 개발도 어렵고 관리도 어려워진다.

어떤 문제가 발생했을 때 어디를 수정해야 하는지 찾기 힘들고, 한 기능을 바꾸다가 다른 기능까지 영향을 받을 수도 있다.

그래서 프로그램이나 시스템의 기능을 역할에 따라 나누어 구성한다.

이때 등장하는 것이 모듈(Module)이다.

내비게이션이라면 현재 위치를 확인하는 부분과 교통정보를 처리하는 부분을 나눌 수 있다.

위치 확인 모듈은 현재 위치나 목적지와 관련된 기능을 담당한다.

교통정보 모듈은 실시간 교통정보와 사고정보를 받아오고, 교통과 관련된 처리를 담당할 수 있다.

온라인 쇼핑몰도 비슷하다.

회원 관리, 상품 관리, 주문, 결제처럼 업무 성격이 다른 기능을 각각 나누어 구성할 수 있다.

여기서 중요한 점은 모듈을 단순히 작은 프로그램이라고 이해하면 안 된다는 것이다.

모듈의 핵심은 크기가 아니라 역할의 구분이다.

회사로 비유하면 조금 더 쉽다.

하나의 회사 안에 인사팀, 재무팀, 영업팀이 있는 것과 비슷하다. 각 부서는 맡은 일이 다르지만 결국 같은 회사의 업무를 수행한다.

모듈 역시 자신에게 맡겨진 기능을 수행하면서 더 큰 프로그램이나 시스템을 구성한다.

모듈 = 프로그램이나 시스템의 일을 기능 또는 역할에 따라 나눈 구성 단위


모델은 특정 입력에서 필요한 결과를 만든다

모델(Model)은 조금 주의해서 볼 필요가 있다.

IT에서는 모델이라는 단어가 매우 넓게 사용된다.

데이터 모델도 있고, 시스템 모델도 있으며, 통계 모델도 있다.

여기서는 최근 IT 서비스에서 자주 접하는 머신러닝·AI 모델을 기준으로 설명한다.

머신러닝 모델은 데이터를 이용해 입력과 결과 사이의 관계를 학습한 뒤, 새로운 입력이 들어왔을 때 그 관계를 바탕으로 결과를 만든다.

내비게이션에서 앞으로의 교통량을 예측해야 한다고 해보자.

시간대, 요일, 현재 교통량, 과거의 교통 패턴 같은 정보가 입력될 수 있다.

교통량 예측 모델은 이런 정보를 바탕으로 특정 도로의 교통량이 앞으로 어떻게 변할지를 예측한다.

도착시간을 예측하는 모델이라면 거리, 현재 교통량, 도로 상황, 과거 이동 기록 등이 입력으로 사용될 수 있다.

그리고 최종적으로는 예상 소요시간이라는 결과를 내놓는다.

다른 분야에서도 같은 구조를 볼 수 있다.

번역 모델은 문장을 받아 다른 언어의 문장을 만들고, 이미지 분류 모델은 사진을 받아 어떤 대상인지 분류한다.

추천 모델은 사용자의 이용 기록이나 관심 정보를 바탕으로 상품이나 콘텐츠를 추천한다.

모델마다 입력도 다르고 출력도 다르지만 공통적인 특징이 있다.

자신에게 주어진 입력을 받아 자신이 담당하는 결과를 만든다.

여기까지 보면 프로그램과 모델의 차이도 자연스럽게 보인다.

내비게이션 프로그램은 사용자 입력부터 최종 화면 출력까지 전체 과정을 움직인다.

반면 교통량 예측 모델은 내비게이션 전체를 운영하지 않는다. 필요한 정보가 전달되면 자신이 담당하는 교통량 예측 결과를 반환할 뿐이다.

그래서 계산기나 메모장처럼 머신러닝 모델이 전혀 없는 프로그램도 얼마든지 존재한다.

모델 = 입력을 받아 학습된 관계를 바탕으로 특정 결과를 만드는 구조


알고리즘은 문제를 푸는 방법이다

이제 알고리즘(Algorithm)을 보자.

서울에서 부산까지 갈 수 있는 길은 하나가 아니다.

가장 짧은 길을 선택할 수도 있고, 거리는 조금 더 길더라도 예상 도착시간이 짧은 길을 선택할 수도 있다.

통행료가 적은 경로를 찾을 수도 있고, 고속도로를 최대한 이용하지 않는 경로가 필요할 수도 있다.

컴퓨터는 수많은 후보 가운데 어떤 경로를 확인하고, 무엇을 먼저 비교하고, 어떤 조건을 적용해 최종 경로를 선택할 것인지 알아야 한다.

이처럼 문제를 어떤 방법과 절차로 해결할 것인지 정한 것이 알고리즘이다.

경로를 찾는 문제에는 경로 탐색 알고리즘이 사용될 수 있다.

숫자를 일정한 순서로 정리하는 데에는 정렬 알고리즘이 사용되고, 데이터를 보호하거나 변환하는 과정에는 암호화 알고리즘이 사용된다.

머신러닝에서도 모델을 학습시키기 위해 여러 알고리즘이 사용된다.

알고리즘을 이해할 때 중요한 것은 이것을 프로그램이나 모듈 같은 하나의 구성요소로만 생각하지 않는 것이다.

알고리즘이 말해주는 것은 어떤 일을 맡았는가가 아니라 그 문제를 어떤 방식으로 풀 것인가다.

알고리즘 = 문제를 해결하기 위한 방법과 처리 절차


알고리즘과 프로그램이 자꾸 비슷해 보이는 이유

알고리즘과 프로그램은 실제로 매우 가까운 곳에서 사용되기 때문에 헷갈리기 쉽다.

경로를 계산하는 알고리즘이 결국 컴퓨터에서 실행되니, 그것도 프로그램이라고 생각할 수 있다.

차이는 보는 관점에 있다.

알고리즘은 해결 방법 자체에 관심이 있다.

어떤 후보부터 확인할 것인지, 어떤 조건으로 비교할 것인지, 언제 계산을 끝낼 것인지와 같은 문제다.

프로그램은 그 방법을 포함해 실제 시스템 전체가 돌아가도록 구현된 실행물에 가깝다.

예를 들어 경로 탐색 방법을 종이에 단계별로 적어놓았다고 해도 그것은 알고리즘이 될 수 있다.

하지만 그것만으로 사용자가 휴대전화에서 목적지를 검색하고 경로를 확인할 수 있는 것은 아니다.

그 알고리즘이 코드로 구현되고, 지도와 화면과 사용자 입력 등 다른 기능들과 연결되어 실행되어야 실제 내비게이션 프로그램이 된다.

그래서 알고리즘은 방법, 프로그램은 실행이라고 구분하면 상당수의 혼란을 줄일 수 있다.


모듈 안에는 모델이 들어갈 수도 있고, 없을 수도 있다

모듈과 모델의 관계도 자주 오해하는 부분이다.

앞에서 교통정보 모듈이 교통량 예측 모델과 도착시간 예측 모델을 사용할 수 있다고 설명했다.

이 그림만 보면 모델이 항상 모듈 안에 들어가는 것처럼 보일 수 있다.

하지만 반드시 그렇지는 않다.

교통정보 모듈은 실시간 교통정보를 받아오고, 사고정보를 확인하고, 데이터를 정리하는 여러 기능을 담당할 수 있다.

그중 미래 교통량을 예측할 필요가 있을 때 모델을 이용할 수 있는 것이다.

반대로 모델이 전혀 필요하지 않은 모듈도 많다.

위치 확인 모듈은 GPS에서 위치정보를 받아오고 지도 데이터와 연결하는 일반적인 코드만으로 기능을 수행할 수도 있다.

결제 모듈, 파일 저장 모듈, 로그인 모듈처럼 머신러닝 모델과 관계없이 동작하는 모듈도 흔하다.

그래서 모듈을 모델을 담는 상자라고 외워버리면 다른 시스템을 볼 때 다시 헷갈리게 된다.

모듈은 담당 업무를 기준으로 나눈 것이고, 모델은 특정 입력을 받아 결과를 만드는 구조다.

둘은 분류 기준부터 다르다.


알고리즘은 모듈 안에서도 사용될 수 있다

알고리즘과 모듈도 마찬가지다.

어떤 모듈이 특정 기능을 담당한다고 해서 그 기능의 처리 방법까지 하나로 정해지는 것은 아니다.

예를 들어 경로와 관련된 기능을 담당하는 모듈이 있다고 해보자.

그 모듈 안에서는 후보 경로를 찾고, 경로를 비교하고, 결과를 정렬하는 여러 처리가 필요할 수 있다.

이 과정에서 각각 다른 알고리즘이 사용될 수 있다.

하나의 모듈 안에 여러 알고리즘이 들어가는 것도 가능하고, 반대로 같은 알고리즘을 여러 프로그램이나 모듈에서 이용하는 것도 가능하다.

정렬 알고리즘을 생각하면 쉽게 이해할 수 있다.

회원 목록을 이름순으로 정렬하는 곳에서도 사용할 수 있고, 상품 가격을 낮은 순서대로 보여주는 곳에서도 사용할 수 있다.

알고리즘은 특정 프로그램에만 속한 개념이 아니라 필요한 곳에서 구현해 사용할 수 있는 문제 해결 방법이기 때문이다.


모델과 알고리즘은 어디에서 갈릴까?

네 용어 가운데 특히 헷갈리기 쉬운 조합은 모델과 알고리즘이다.

두 개 모두 입력을 처리하고 결과를 만드는 과정에서 사용되기 때문이다.

하지만 내비게이션 사례를 다시 보면 차이가 선명해진다.

교통량 예측 모델은 과거와 현재의 교통 데이터를 바탕으로 앞으로의 교통량을 예측한다.

반면 경로 탐색 알고리즘은 준비된 정보를 가지고 여러 후보 경로를 어떤 방식으로 조사하고 비교할지를 정한다.

모델은 학습된 관계가 중요하다.

알고리즘은 문제를 처리하는 방법과 절차가 중요하다.

그리고 두 개가 완전히 독립되어 있는 것도 아니다.

머신러닝 모델 역시 저절로 만들어지는 것이 아니다. 데이터를 이용해 모델을 학습시키는 과정에도 여러 학습 알고리즘이 사용된다.

따라서 모델과 알고리즘은 서로 관련이 있지만 같은 개념은 아니다.


내비게이션 안에서 네 가지를 다시 찾아보자

처음의 내비게이션으로 돌아가면 구조는 다음과 같이 볼 수 있다.

INPUT : 서울 → 부산

위치 확인 모듈
현재 위치와 목적지를 확인한다.

교통정보 모듈
실시간 교통정보와 사고정보 등을 처리한다.

필요하다면 이 과정에서
교통량 예측 모델, 도착시간 예측 모델 등을 사용해 앞으로 필요한 정보를 예측할 수 있다.

경로 탐색 알고리즘
위치, 교통상황, 예상 소요시간 등의 정보를 바탕으로 여러 후보 경로를 계산하고 비교한다.

OUTPUT : 이동수단별 추천 경로

자동차, 대중교통, 도보, 자전거 등 사용자가 선택할 수 있는 경로를 화면에 보여준다.

여기서 위치 확인 모듈이나 교통정보 모듈만 따로 떼어놓고 보면 내비게이션 전체가 되지 않는다.

교통량 예측 모델 역시 내비게이션 전체를 움직이지 않는다.

경로 탐색 알고리즘도 해결 방법 하나를 담당할 뿐이다.

이 모든 기능과 처리를 연결하고 실제로 사용자 입력에서 화면 출력까지 동작하게 만든 전체 실행물이 내비게이션 프로그램이다.


알고리즘·프로그램·모듈·모델 한눈에 비교하기

용어가장 쉽게 말하면볼 때 생각할 질문내비게이션 예시
프로그램전체 작업을 실제로 실행하는 것무엇이 전체 과정을 움직이는가?내비게이션 프로그램
모듈기능과 역할에 따라 나눈 구성 단위어느 부분이 어떤 일을 담당하는가?위치 확인 모듈, 교통정보 모듈
모델입력을 받아 특정 결과를 만드는 구조어떤 정보를 받아 어떤 결과를 만드는가?교통량 예측 모델, 도착시간 예측 모델
알고리즘문제를 처리하는 방법과 절차이 문제를 어떤 방법으로 풀 것인가?경로 탐색 알고리즘

이름보다 기준을 먼저 보면 덜 헷갈린다

프로그램, 모듈, 모델, 알고리즘을 한 줄로 세워놓고 어느 것이 더 크고 어느 것이 더 작은지 구분하려 하면 계속 예외가 생긴다.

처음부터 같은 기준으로 만들어진 용어들이 아니기 때문이다.

프로그램을 볼 때는 전체 실행을 생각하면 된다.

모듈을 볼 때는 기능과 역할이 어떻게 나뉘어 있는지를 보면 된다.

모델이라는 말이 나오면 어떤 입력을 받아 어떤 결과를 만드는지 살펴보면 된다.

알고리즘에서는 문제를 어떤 방법과 순서로 처리하는지가 핵심이다.

이 기준을 알고 있으면 다른 IT 시스템을 볼 때도 구조를 훨씬 쉽게 읽을 수 있다.

쇼핑몰의 결제 모듈이라는 말을 봤을 때는 결제라는 역할을 담당하는 부분이라고 이해할 수 있고, 추천 모델이라는 표현이 나오면 어떤 정보를 입력받아 어떤 추천 결과를 만드는지를 살펴보면 된다.

정렬 알고리즘이라는 말이 나오면 프로그램의 어느 부분인지부터 찾을 필요가 없다. 데이터를 어떤 방식으로 정렬하는지를 설명하는 말이기 때문이다.

용어를 외우는 것보다 그 용어가 무엇을 기준으로 설명하고 있는지를 구분하는 것이 더 중요하다.


DANA NOTES 한줄정리

프로그램은 전체 작업을 실행하고, 모듈은 기능을 나눠 맡는다. 모델은 입력에서 필요한 결과를 만들고, 알고리즘은 문제를 해결하는 방법을 정한다.


헷갈리는 IT 용어 시리즈 목차

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤