์ด ๋ฌธ์„œ์˜ ์›๋ณธ์€ ์™ธ๋ถ€ ์œ„ํ‚ค์—์„œ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.

1. ๊ฐœ์š”2. ๊ด€๋ จ ๋ฌธ์„œ

1. ๊ฐœ์š”[ํŽธ์ง‘]

Application Programming Interface
์‘์šฉ ํ”„๋กœ๊ทธ๋žจ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์ธํ„ฐํŽ˜์ด์Šค

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ, ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์ผ๋ จ์˜ ๋ถ€ ํ”„๋กœ๊ทธ๋žจ, ํ”„๋กœํ† ์ฝœ ๋“ฑ์„ ์ •์˜ํ•˜์—ฌ ์ƒํ˜ธ ์ž‘์šฉ์„ ํ•˜๊ธฐ ์œ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์–‘์„ ๋งํ•œ๋‹ค. API๋Š” ์†Œํ”„ํŠธ์›จ์–ด ์ปดํฌ๋„ŒํŠธ(Function, Method, Operation์œผ๋กœ ๋ถˆ๋ฆฌ๋Š” ๊ทธ๊ฒƒ์ด๋‹ค)์˜ ๊ธฐ๋Šฅ, ์ž…๋ ฅ, ์ถœ๋ ฅ, ๊ทธ๋ฆฌ๊ณ  ์ด์— ์‚ฌ์šฉ๋˜๋Š” ์ž๋ฃŒํ˜•์œผ๋กœ ํ‘œํ˜„๋œ๋‹ค. API ์ž์ฒด๋Š” ์–ด๋””๊นŒ์ง€๋‚˜ ์‚ฌ์–‘(Specification)๋งŒ์„ ์ •์˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„(Implementation)๊ณผ๋Š” ๋…๋ฆฝ์ ์ด๋‹ค. ์ž˜ ์„ค๊ณ„๋œ API๋Š” ํ”„๋กœ๊ทธ๋žจ ๊ฐœ๋ฐœ์„ ๋ณด๋‹ค ์‰ฝ๊ฒŒ ํ•ด์ค€๋‹ค. API๋Š” ๋‹ค์–‘ํ•œ ํ˜•ํƒœ๋กœ ์กด์žฌํ•˜๋ฉฐ, ์œ ๋‹‰์Šค์˜ POSIX ํ‘œ์ค€, ์œˆ๋„์šฐ์˜ MFC๋‚˜ Win32, C++์˜ ํ‘œ์ค€ ํ…œํ”Œ๋ฆฟ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ (STL), Java SE API ๋“ฑ์ด ์ด์— ํ•ด๋‹นํ•œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๊ทธ๋ž˜ํ”ฝ ์นด๋“œ๋‚˜ ๋””์Šคํฌ ๋“œ๋ผ์ด๋ธŒ ๋“ฑ์˜ ํ•˜๋“œ์›จ์–ด ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋ฅผ ์กฐ์ž‘ํ•  ๋•Œ, API๋Š” ์ž‘์—…์„ ํŽธ๋ฆฌํ•˜๊ฒŒ ํ•ด์ค€๋‹ค. ๋Œ€๊ฐœ ์‹ค์ œ๋กœ๋Š” ๋ฐ‘๋ฐ”๋‹ฅ์—์„œ ๋งค์šฐ ์ €์ˆ˜์ค€์œผ๋กœ ์ด๋Ÿฌํ•œ ์ž‘์—…์ด ์ˆ˜ํ–‰๋˜๋Š”๋ฐ, API๋Š” ์ด๋Ÿฌํ•œ ์ž‘์—…๋“ค์— ๋Œ€ํ•œ ๊ธฐ๋Šฅ์„ ๋Œ€์ƒ์ด ๋˜๋Š” ์–ธ์–ด์— ๋งž๊ฒŒ ์ถ”์ƒํ™”ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋ž˜๋จธ๊ฐ€ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธ๋ฆฌํ•˜๊ฒŒ ์„ค๊ณ„ํ•œ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์–‘์ด๋‹ค.

ํ”„๋กœ๊ทธ๋žจ์— ํ”Œ๋Ÿฌ๊ทธ์ธ ํ˜•ํƒœ๋กœ ์„ค๊ณ„๋œ API๊ฐ€ ์ ์šฉ๋˜๋ฉด, ์ด๋ฏธ ์ž‘์„ฑ๋˜์–ด ์ปดํŒŒ์ผ๋˜๊ณ  ์™„์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์˜ ์ˆ˜์ •์—†์ด ํ”„๋กœ๊ทธ๋žจ์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ธํ„ฐ๋„ท ์ต์Šคํ”Œ๋กœ๋Ÿฌ, ํŒŒ์ด์–ดํญ์Šค, ํฌ๋กฌ๊ณผ ๊ฐ™์€ ์›น ๋ธŒ๋ผ์šฐ์ € ํ”„๋กœ๊ทธ๋žจ์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ, ์• ๋“œ์˜จ๊ณผ ๊ฐ™์€ ๊ฒƒ์ด ๋ฐ”๋กœ ์ด๋Ÿฌํ•œ ํ˜•์‹์˜ ํ”Œ๋Ÿฌ๊ทธ์ธ API๋ฅผ ์‚ฌ์šฉํ•ด ๊ตฌํ˜„๋œ ๊ฒƒ์ด๋‹ค.

API๊ฐ€ ์‹ค์ œ ๊ธฐ๋Šฅ ๊ตฌํ˜„์ฒด์ธ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ์ œ๊ณต๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ์œผ๋ฉฐ, ์ด ๊ฒฝ์šฐ๋ฅผ SDK(Software Development Kit)๋ผ๊ณ  ํ•œ๋‹ค. SDK๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ API, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ•จ๊ป˜ ํ”„๋กœ๊ทธ๋žจ์„ ๊ฐœ๋ฐœํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ์—ฌ๋Ÿฌ ๋ณด์กฐ ํ”„๋กœ๊ทธ๋žจ์„ ํฌํ•จํ•œ๋‹ค.

์›๊ฒฉ์˜ ์ปดํ“จํ„ฐ์— ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ฃผ๋Š” SOAP ๋˜๋Š” RESTful ์„œ๋น„์Šค์—์„œ API๋Š” ๊ทธ ์ž์ฒด๋กœ ์›๊ฒฉ ๊ธฐ๋Šฅ์— ๋Œ€ํ•œ ์‚ฌ์–‘(Specification)์ด ๋œ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋ช…๋ น์–ด ์ฐฝ[1]์— "Hello, World!" ๋ผ๋Š” ๋ฌธ์ž์—ด์„ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ C์–ธ์–ด๋กœ ์ž‘์„ฑํ•œ๋‹ค๊ณ  ํ•˜์ž. ๋‹น์—ฐํžˆ ํ…์ŠคํŠธ๋กœ ์ถœ๋ ฅํ•˜๋Š” printf API๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ printf("Hello, World!\\n"); ๋ผ๊ณ  ์ž‘์„ฑํ•˜๊ฒŒ ๋  ๊ฒƒ์ด๋ฉฐ, ์ด๋Š” ์œˆ๋„์šฐ, ๋ฆฌ๋ˆ…์Šค, ์œ ๋‹‰์Šค, OS X ๋ชจ๋‘์—์„œ ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•˜๋„๋ก C์–ธ์–ด API๊ฐ€ ๋ณด์žฅํ•ด์ค€๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋Š” ๋ณด๋‹ค ์ €์ˆ˜์ค€์—์„œ ์–ด๋– ํ•œ ์ผ์ด ์ผ์–ด๋‚˜๋Š”์ง€ ์•Œ์ง€ ๋ชปํ•ด๋„, ์ด๋ฏธ ์ •์˜๋œ printf๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ๋งŒ ํ•˜๋ฉด ํŽธ๋ฆฌํ•˜๊ฒŒ ํ…์ŠคํŠธ๋ฅผ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ๋‹ค. ์ฆ‰ ์ž˜ ์„ค๊ณ„๋œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ํ™˜๊ฒฝ(ํ”Œ๋žซํผ)์ด ๋‹ฌ๋ผ์ ธ๋„ ๋™์ผํ•œ ์ฝ”๋“œ๊ฐ€ ๋™์ผํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ˆ˜ํ–‰ํ•˜๋ฉฐ, ๋ณด๋‹ค ํŽธ๋ฆฌํ•˜๊ฒŒ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ์ˆ˜ ์žˆ๋‹ค.

ํ•œ๋งˆ๋””๋กœ, API๋Š” ์†Œ์Šค ์ฝ”๋“œ ์ˆ˜์ค€์—์„œ ์ •์˜๋˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‹ค. ์ด์™€๋Š” ๋‹ฌ๋ฆฌ ๊ธฐ๊ณ„์–ด ์ด์ง„ ๋ฐ”์ด๋„ˆ๋ฆฌ ์ˆ˜์ค€์—์„œ ์ •์˜๋˜๋Š” ์ด๋Ÿฌํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋Š” ABI(Application Binary Interface)๋ผ๊ณ  ํ•œ๋‹ค.

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋Š” ์‹ค์ œ๋กœ ๋™์ž‘ํ•  ์ˆ˜ ์žˆ๋Š” ๋‹จํŽธํ™”๋œ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋Š” ์ ์—์„œ API์™€ ๋‹ค๋ฅด๋‹ค. ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ž์ฒด๋Š” API๊ฐ€ ์—†์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๊ณ , ์ด๋ฏธ ๊ตฌํ˜„๋˜์–ด ๊ธฐ๊ณ„์–ด๋กœ ์ปดํŒŒ์ผ๋œ ํ”„๋กœ๊ทธ๋žจ์— ์˜ํ•ด ์‚ฌ์šฉ๋  ์ˆ˜ ์žˆ๋‹ค. ์ด๋ฏธ ๊ตฌํ˜„๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์™€ ํ”„๋กœ๊ทธ๋žจ ์‚ฌ์ด์˜ ์ธํ„ฐํŽ˜์ด์Šค ์‚ฌ์–‘ ๋˜ํ•œ API์ด๋‹ค. API ์—†์ด ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰ํ•˜๋Š”๋ฐ ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋งŒ ๋ฐฐํฌ๋˜๋Š” ๋Œ€ํ‘œ์ ์ธ ๊ฒฝ์šฐ๋กœ "Visual C++ Runtime Library", "DirectX Runtime"์ด ์žˆ๋‹ค.

์œ ๋‹‰์Šค๋Š” ์• ์ดˆ์— C์–ธ์–ด๋กœ ๊ฐœ๋ฐœ๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‹น์—ฐํžˆ C์–ธ์–ด๋ฅผ ์œ„ํ•œ API๊ฐ€ ๊ธฐ๋ณธ์œผ๋กœ ์ œ๊ณต๋œ๋‹ค. MS-DOS๋Š” ๊ทธ๋ ‡์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ํŠน์ • ์–ธ์–ด๋ฅผ ์œ„ํ•œ API ๊ฐ™์€ ๊ฒƒ์€ ์—†์—ˆ๊ณ , ๊ธฐ๊ณ„์–ด(๋˜๋Š” ์–ด์…ˆ๋ธ”๋ฆฌ์–ด) ์ˆ˜์ค€์—์„œ ์†Œํ”„ํŠธ์›จ์–ด ์ธํ„ฐ๋ŸฝํŠธ๋ฅผ ์ œ๊ณตํ–ˆ๋‹ค. MS-DOS์˜ ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์„ ์ง€๊ธˆ์˜ ๊ด€์ ์—์„œ ๋ณด๋ฉด, ABI๋ฅผ ์ •์˜ํ•œ ๊ฒƒ์œผ๋กœ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

ํ”„๋ ˆ์ž„์›Œํฌ๋Š” ๋ช…ํ™•ํ•˜๊ฒŒ ์ •์˜๋œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ๋‹ค๋Š” ์ ์—์„œ API์™€ ๋น„์Šทํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์ผ๋ฐ˜์ ์ธ API๋Š” ์ „์ฒด ์ œ์–ด ๊ตฌ์กฐ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ชฝ์—์„œ ์›ํ•˜๋Š”๋Œ€๋กœ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ๋Š” ๊ทธ๋Ÿด ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ๋‹ค๋Š” ์ ์ด ๋‹ค๋ฅด๋‹ค.

2. ๊ด€๋ จ ๋ฌธ์„œ[ํŽธ์ง‘]

[1] MS-DOS ์…ธ, ์œˆ๋„์šฐ์˜ cmd.exe, ๋˜๋Š” ์œ ๋‹‰์Šค/๋ฆฌ๋ˆ…์Šค์˜ *Term ํ„ฐ๋ฏธ๋„ ํ”„๋กœ๊ทธ๋žจ, OS X์˜ Terminal