✅ Intro.
제가 어릴 적 가장 기억에 남는 게임을 고르라면 저는 “롤러코스터 타이쿤” 을 고를 것입니다.
얼마나 이 게임에 애정이 있었냐 하면, 이런 일화도 있었답니다.
제가 너무 이 게임에 빠져서 밤새 게임을 하다 보니 게임 시간을 정해주셔서 밤에는 못하게 되었습니다.
그러나 저는 부모님 몰래 “롤러코스터 타이쿤”을 플레이하기 위해 부모님께서 주무시는 시간에 이불로 모니터를 덮고 그 이불 속에서 땀을 뻘뻘 흘리며 게임을 했었답니다.
이런 일화를 떠올리니 웃음이 나네요 😊
프레임워크(Framework)와 라이브러리(Library)에 대해서 포스팅을 하는데 왜 Intro에 “롤러코스터 타이쿤” 이야기를 하는지 궁금하신 분들이 계실 거예요!!
사실 “롤러코스터 타이쿤” 은 “프레임워크(Framework)와 라이브러리(Library)” 로 플레이 하는 게임이라고 말해도 무방하거든요 !!
이제, 본격적으로 “롤러코스터 타이쿤”과 “프레임워크(Framework) 그리고 라이브러리(Library)”가 어떤 관계인지 한 번 알아봅시다 🙌
🎡 1. 나만의 놀이동산을 만들어봅시다!
우리의 목표는 멋진 테마파크를 만들어서 일정 기간 안에 정해진 수익을 내는 것이에요!!
그러기 위해서는 테마파크에 재미있는 볼거리, 먹거리 그리고 가장 중요한 🎢”재미있는 놀이기구”🎡 가 있어야겠죠?!
🛠️ 2. 놀이기구를 만드는 2가지 방법 ✌️
롤러코스터 타이쿤에서 “놀이기구를 만드는 방법은 두 가지”로 나뉩니다.
1️⃣ 내가 직접 손수 만들기 !
- 직접 손수 만드는 것은 레일 조각을 하나씩 붙여서 롤러코스터를 원하는 모양으로 만드는 것이죠. 🎢
2️⃣ 이미 만들어져 있는 놀이기구 설치하기 !
- 이미 만들어져 있는 놀이기구는 원하는 위치에 설치만 하면 됩니다. 🎡
🧱 2. 라이브러리 == 레일 조각.
<img src=”https://github.com/devKobe24/images2/blob/main/rc_tycoon_4.png?raw=true” whidth = 350, height = 350>
- 다양한 모양의 레일 조각을 내가 직접 선택해서 조립해요.
- 코너, 루프, 경사, 상승 등 내가 주도해서 연결하죠.
- 내가 설계한 대로, 내가 의도한 대로 구성됩니다.
🛠️ 즉, 라이브러리란!
내가 필요한 기능만 골라서 조립하는 도구 모음 입니다 :)
🧑💻 개발자 비유:
- Lombok, Jackson, Apache, Commons, Retrofit, QueryDSL 등은 모두 레일 조각 같은 존재 !
- 내가 직접 호출하고 사용할지 결정합니다.
🏗️ 3. 프레임워크 == 놀이기구 자동 운영 시스템.
<img src=”https://github.com/devKobe24/images2/blob/main/rc_tycoon_3.png?raw=true” whidth = 350, height = 350>
- 내가 놀이기구를 설치하면
- 탑승 대기열 만들기 ➞ 입장 ➞ 출발 ➞ 운행 ➞ 하차
이 모든 과정은 게임이 자동으로 제어합니다.
- 탑승 대기열 만들기 ➞ 입장 ➞ 출발 ➞ 운행 ➞ 하차
🧑💻 개발자 비유:
- Spring, Django, Rails, Angular 등은 바로 이 시스템과 같아요.
- 전체 흐름은 프레임워크가 갖고 있고, 나는 필요한 부품만 넣습니다.
📢 이것이 바로 프로그래밍에서 말하는
제어의 역전 (Inversion of Control) 입니다.
프레임워크가 나의 코드를 호출하고 전체 흐름을 통제해요!
⚔️ 4. 정면 비교: 프레임워크(Framework)
라이브러리(Library)
비교 항목 | 🧱 라이브러리(레일 조각) | 🏗️ 프레임워크 (놀이기구 시스템) |
---|---|---|
주도권 | 개발자 (내가 호출) | 프레임워크 (프레임워크가 내 코드를 호출) |
유연성 | 매우 높음 | 낮음 (틀 안에서 동작) |
사용 방식 | 필요한 것만 골라 사용 | 틀을 따르고 필요한 부분만 채움 |
진입 난이도 | 낮음 (직관적) | 중간 이상 (구조 이해 필요) |
예시 | Lombok, Jackson, Retrofit | Spring, Django, Angular |
🌈 5. 결론: 당신은 지금 어떤 놀이공원을 짓고 있나요?
🎢 직접 레일을 조립하는 자유로운 설계자?
➞ 라이브러리 중심의 개발
🎠 자동 운영 시스템을 활용하는 시스템 설계자?
➞ 프레임워크 기반 개발
🎁 부록: 필자의 한마디.
“라이브러리는 내가 꺼내 쓰는 도구고,
프레임워크는 나를 껴안은 큰 구조다.”
🎢 롤러코스터 타이쿤 덕분에 개념이 잘 들어왔나요?
그랬다면 너무 기분이 좋을것 같아요 😆
그렇다면 오늘은 여기까지 !! 다음에 또 만나요 안녕 🙌
📎 이미지 출처