남이 만든 부품(라이브러리)

내 서비스 안에서 굴러가는 남의 코드 묶음이에요. 직접 만들지 않아 빠르고 싸지만, 그 부품이 멈추거나 조건을 바꾸면 내 서비스도 같이 멈춰요.

쉽게 말하면

가게에서 파는 음료 컵을 사장님이 직접 만들지는 않아요. 컵 공장에서 받아 쓰죠. 훨씬 싸고 빠르고 품질도 안정적이에요. 대신 그 공장이 문을 닫거나 규격을 바꾸면, 컵 하나 때문에 내 가게가 그날 장사를 못 해요. 남이 만든 부품이 정확히 이래요. 내가 만들지 않은 물건이 내 가게의 필수품 자리에 들어와 있는 거예요.

개발자들은 이 부품을 라이브러리라고 부르고, 내 서비스가 그 부품에 기대고 있는 관계를 의존성이라고 불러요. 날짜 계산, 표와 그래프, 결제창, 지도, 사진 자르기 같은 것이 거의 다 남이 만든 부품이에요.

이 문서는 부품을 설치하는 방법을 다루지 않아요. 사장님이 부품을 자산이자 위험으로 세는 법을 다뤄요. 들고 나갈 수 있는 짐인지는 내 것을 가지고 나가기에서 확인했고, 그 짐 안에 섞인 남의 물건이 여기 주인공이에요.

부품을 세지 않은 가게
부품 목록: 모름 · 누가 언제 넣었는지 기록 없음 · 버전 고정 안 함 · 조건(라이선스) 확인 안 함

평소에는 아무 일도 없어요. 사고는 어느 날 아침 배포가 이유 없이 실패하는 모습으로 와요. 어제 코드를 하나도 안 고쳤는데요.

부품을 센 가게
부품 목록: 파일로 있음 · 무엇이 왜 들어왔는지 한 줄 메모 · 버전 고정 · 조건 확인 완료

사고가 나도 범위가 좁아요. "어제와 달라진 건 이 부품 하나"까지 5분 안에 좁히고, 되돌릴 곳도 정해져 있어요.

왜 남의 것을 쓰나

부품을 쓰는 이유는 게으름이 아니라 안전 이에요. 날짜 계산이나 결제창처럼 이미 수많은 가게에서 검증된 일은, 혼자 처음 만든 코드보다 남의 검증된 부품이 사고를 덜 내요.

하려는 일직접 만들까 받아 쓸까
날짜와 시간 계산받아 써요시간대와 윤년, 서머타임까지 맞추는 일이에요. 직접 만들면 몇 달 뒤 예약이 하루씩 밀리는 사고로 돌아와요
결제창받아 써요. 선택 여지가 없어요결제사가 제공하는 것만 써야 해요. 카드 정보를 내 서버가 직접 받으면 안 되는 영역이에요
표와 그래프받아 써요그리는 것 자체는 어렵지 않아도, 화면 크기마다 안 깨지게 만드는 데 시간이 다 들어가요
로그인과 비밀번호 보관받아 써요직접 만든 비밀번호 보관은 거의 항상 틀려요. 틀리면 사고 하나가 손님 전체의 사고가 돼요
내 가게만의 계산 규칙직접 만들어요할인 정책이나 예약 겹침 규칙은 내 가게 사정이에요. 남의 부품에 억지로 끼우면 매번 우회 코드가 붙어요
화면 문구와 배치직접 만들어요쉬운 일에 무거운 부품을 붙이면 화면이 느려져요. 이득 없이 관리할 것만 늘어요

부품 하나를 넣으면 하나만 들어오지 않아요

부품도 다른 부품에 기대고 있어요. 그래서 하나를 설치하면 그것이 기대는 부품들이 함께 따라와요. 내가 고른 건 한 개인데 목록에는 훨씬 많은 이름이 적히는 이유예요. 이 목록을 관리하는 도구 이야기는 패키지 매니저에 있어요.

멈출 때는 이렇게 멈춰요

부품 사고의 특징은 내가 아무것도 안 했는데 생긴다 는 점이에요. 그래서 원인을 엉뚱한 곳에서 찾다가 시간을 다 씁니다. 증상 다섯 개를 미리 알아 두면 첫 10분이 달라져요.

보이는 증상실제로 벌어진 일먼저 볼 곳
코드를 안 고쳤는데 배포만 실패해요부품 버전을 고정하지 않아서, 오늘 받아 온 부품이 어제와 다른 것이에요부품 목록과 버전 고정 파일. 잠금 파일이 있는지부터 봐요
한 화면만 하얗게 떠요그 화면에서만 쓰는 부품이 실패했어요. 나머지 화면은 그 부품을 안 써요그 화면이 밖에서 끌어오는 주소가 응답하는지
결제창이나 지도만 안 떠요남의 서비스에서 직접 불러오는 부품이라, 그쪽이 멈추면 그 칸만 비어요제공사 공지. 내 서버 문제가 아닌 경우가 많아요
부품을 올린 뒤 기능 절반이 멈췄어요새 판이 옛 사용법을 버렸어요. 호환이 깨진 것이에요버전 번호 규칙에서 앞자리가 바뀌었는지
메일로 보안 경고가 왔어요내가 쓰는 부품에서 구멍이 발견됐어요. 내 코드가 아니라도 구멍은 내 서비스에 열려 있어요그 부품이 정말 내 목록에 있는지, 고친 판이 나왔는지

장면 1 · 외주 개발자가 아침에 연락했다

이쪽에서 고친 건 없는데 빌드가 깨져요. 부품 버전이 밤에 올라갔네요.

이건 변명이 아니라 흔한 사실이에요. 버전을 고정하지 않으면 부품 제작자가 올린 새 판이 그대로 내 배포에 들어와요. 여기서 사장님이 물을 건 하나예요. "버전을 고정해 두는 파일이 우리 저장소에 있나요." 없다면 오늘 만드는 것이 이번 사고의 진짜 대응이에요. 급한 복구는 이전 버전으로 돌리기 순서로 하고요.

확인해 보세요

예약 사이트를 3주 동안 손대지 않았는데 오늘 갑자기 배포가 실패했어요. 가장 먼저 의심할 것은?

고를 때 보는 다섯 칸

부품을 고르는 일은 거래처를 고르는 일과 같아요. 기능이 되는지는 기본이고, 값은 몇 년 뒤에도 이 거래처가 있는가 에서 갈려요.

볼 칸무엇을 확인하나나쁜 신호
최근에 고쳐지고 있나마지막 수정 날짜와 최근 몇 달의 활동몇 년째 조용해요. 보안 구멍이 나와도 고쳐 줄 사람이 없어요
쓰는 곳이 많은가내려받는 양, 이 부품을 쓴다고 밝힌 서비스쓰는 사람이 거의 없어요. 문제가 나도 검색해서 답을 찾을 수 없어요
설명서가 있나쓰는 방법과 바뀐 내역이 글로 정리돼 있는지예시 코드 몇 줄뿐이에요. 막히면 만든 사람에게 물어볼 수밖에 없어요
조건이 무엇인가무료인지, 출처를 밝혀야 하는지, 상업적으로 써도 되는지조건이 안 적혀 있어요. 안 적힌 것은 허락이 아니에요. 오픈소스 라이선스를 보세요
빼기 쉬운가이 부품을 빼면 몇 군데를 고쳐야 하는지화면 전부가 그 부품 방식으로 짜여 있어요. 나중에 못 바꿔요

다섯 칸 중 사장님이 가장 무겁게 봐야 하는 건 마지막 칸이에요. 빼기 쉬운 부품은 언제든 갈아치울 수 있으니 위험이 작아요. 빼기 어려운 부품은 그 회사의 요금 인상까지 그대로 받아야 해요.

무료와 조건 없음은 다른 말이에요

돈을 안 받는 부품에도 조건이 붙어요. 흔한 것이 출처를 화면이나 문서에 밝히라는 조건, 그리고 내 코드도 같은 조건으로 공개하라는 조건이에요. 뒤쪽 조건이 붙은 부품을 상업 서비스에 넣으면 나중에 빼는 일이 공사가 돼요. 부품을 넣는 날 5분만 확인하세요.

올릴 때의 순서

"부품을 최신으로 다 올려 주세요"는 위험한 주문이에요. 여러 개를 한꺼번에 올리면 문제가 생겼을 때 어느 부품이 범인인지 못 가려요. 순서가 있어요.

  1. 1지금 목록을 파일로 남겨요. 무엇이 몇 번 판으로 들어 있는지 오늘 상태가 기준선이 돼요. 기준선이 없으면 되돌릴 곳도 없어요.
  2. 2바뀐 내역을 먼저 읽어요. 부품마다 무엇이 바뀌었는지 적어 둔 글이 있어요. 여기에 "삭제"나 "더 이상 지원하지 않음"이 있으면 그것이 위험 신호예요.
  3. 3보안 문제부터, 나머지는 뒤로. 구멍이 발견된 부품은 빨리 올려야 해요. 기능이 늘어난 것뿐인 부품은 급할 이유가 없어요.
  4. 4한 번에 하나씩 올려요. 올리고 확인, 올리고 확인이에요. 범인을 가릴 수 있는 유일한 방법이에요.
  5. 5연습 무대에서 눌러 봐요. 연습 무대가 있으면 거기서 먼저 하고, 없으면 손님이 가장 적은 시간에 해요.
  6. 6주요 화면을 한 바퀴 돌아요. 예약, 결제, 로그인처럼 돈과 손님이 걸린 화면부터요. 이 한 바퀴가 되돌아온 오류를 잡는 자리예요.

안 올리는 것도 위험이에요

겁이 나서 몇 년 안 올리면 나중에는 한 번에 올릴 수도 없어요. 사이에 호환이 깨진 판이 여러 번 지나가 있어서, 한 번의 업데이트가 며칠짜리 공사가 돼요. 기능 부품은 분기에 한 번쯤, 보안 경고는 그때그때가 무난해요. 이 미룬 빚의 이름이 유지보수 문서에도 나와요.

하나 더

외주 개발자가 "부품 12개를 최신으로 한 번에 올렸고 화면은 잘 뜬다"고 보고했어요. 지금 물을 말은?

바이브캠퍼스에서 만든 것은

스튜디오 결과물은 한 파일 구조를 기본으로 해요. 핸드오프 팩에 함께 들어가는 AGENTS.md 가 "한 파일 구조, 외부 파일 함부로 붙이지 않기"를 규칙으로 적어 두고 있어요. 부품에 기대는 정도가 처음부터 얕게 시작한다는 뜻이에요.

그래도 부품이 아예 없는 건 아니에요. 지도, 결제창, 글꼴처럼 밖에서 불러오는 것이 있으면 그것이 곧 남의 부품이에요. 그 주소가 응답하지 않는 날에는 그 칸만 비어 보여요.

직접 해보기

내 결과물이 밖에 기대는 곳을 세어 보세요

스튜디오에서 만든 결과물의 코드를 열어 https:// 로 시작하는 주소 를 세어 보세요. 그 개수가 내 서비스가 남에게 기대고 있는 곳의 수예요. 0개면 아주 튼튼한 상태고, 몇 개 있으면 각각 무엇인지만 알아 두면 돼요. 오늘 아무것도 고치지 않아도 값이 있는 확인이에요.

스튜디오에서 코드 열어 보기
Q. 그럼 부품을 하나도 쓰지 않는 게 가장 안전한가요?
아니에요. 직접 만든 코드도 관리 대상이 되고, 남들이 이미 겪은 사고를 처음부터 다시 겪게 돼요. 기준은 개수가 아니라 성격이에요. 검증이 필요한 일은 받아 쓰고, 내 가게만의 규칙은 직접 만들어요.
Q. 부품이 관리 중단됐다는 걸 어떻게 알 수 있나요?
세 가지를 봐요. 마지막 수정 날짜가 오래됐는지, 제작자가 중단 공지를 올렸는지, 사람들이 다른 부품으로 옮겨 갔는지요. 셋 중 둘이면 갈아탈 준비를 시작할 때예요. 당장 멈추지는 않지만, 보안 구멍이 나오는 날 고쳐 줄 사람이 없어요.
Q. 부품 하나 올리는 데 왜 견적이 나오나요?
올리는 손작업은 짧고, 값이 나가는 건 올린 뒤 확인이에요. 부품이 바뀌면 그 부품을 쓰는 모든 화면이 다시 확인 대상이 돼요. 견적을 볼 때는 "올리기"가 아니라 "확인 범위"가 적혀 있는지 보세요.
Q. 부품 목록은 어디서 볼 수 있나요?
코드를 받아 열면 부품 이름과 버전이 적힌 파일이 있어요. 사장님이 직접 읽을 필요는 없지만, 그 파일이 있는지와 언제 갱신됐는지 는 볼 수 있어야 해요. 맡긴 곳에 "부품 목록 파일 위치"를 한 번만 물어 두세요.
Q. 부품 때문에 서비스가 멈추면 손님에게 뭐라고 하나요?
원인을 말하지 말고 상태를 말해요. "결제 화면에 문제가 있어 확인 중이고, 복구되면 알려 드린다"까지가 적당해요. 남의 부품 탓이라는 설명은 손님에게 아무 도움이 안 돼요. 순서는 사고 대응에 있어요.

장면 2 · 부품 제작자가 공지를 올렸다

다음 판부터 무료 사용은 하루 요청 수 안에서만 됩니다.

부품이 멈추는 방식은 사라짐만이 아니에요. 조건이 바뀌는 것 도 멈춤이에요. 이때 사장님이 할 일은 셋이에요. 지금 판을 고정해서 시간을 벌고, 그 부품을 쓰는 화면이 몇 개인지 세고, 갈아탈 후보를 하나 찾아 두는 거예요. 세 번째까지 해 두면 다음 공지가 와도 협상할 여유가 생겨요.

더 깊이 (안 읽어도 괜찮아요)

부품이 부품을 데려오는 구조 · 부품 제작자도 남의 부품을 써요. 그래서 내가 하나를 설치하면 그 부품이 기대는 것, 그것이 또 기대는 것까지 함께 들어와요. 여기서 두 가지가 따라와요. 첫째, 내가 이름도 모르는 부품이 내 서비스 안에 있어요. 둘째, 그 깊은 곳의 부품에서 구멍이 나와도 내 서비스의 구멍이에요. 그래서 보안 경고가 내가 본 적 없는 이름으로 오는 일이 흔해요. 겁낼 일은 아니고, 목록 파일이 있으면 도구가 대신 찾아 줘요.

버전 앞자리가 바뀌면 손을 멈춰요 · 부품 버전은 점 세 개로 적는 관례가 널리 쓰여요. 뒷자리는 고친 것, 가운데는 더한 것, 앞자리는 옛 사용법을 버렸다는 신호 예요. 앞자리가 올라간 업데이트는 성격이 다른 작업이라, 기능 업데이트와 같은 날에 묶지 않아요. 다만 관례라서 모든 제작자가 지키지는 않아요. 그래서 앞자리를 확인한 뒤에도 바뀐 내역을 읽는 순서가 남아요. 자세한 규칙은 버전 번호 규칙에 있어요.

"최신으로 다 올려 주세요"가 위험한 이유 · 이 주문에는 세 가지가 빠져 있어요. 어느 부품을 먼저 올릴지, 무엇을 확인할지, 잘못되면 어디로 돌아갈지예요. 셋이 없으면 업데이트가 도박이 돼요. 대신 이렇게 말하면 같은 일이 안전해집니다. "보안 경고가 있는 것만 먼저 올려 주세요. 하나씩 올리고, 결제와 로그인은 실제로 눌러 확인해 주세요. 되돌리는 방법도 같이 알려 주세요."

부품을 뺄 수 있는지 미리 확인하기 · 부품을 넣는 날 딱 하나만 적어 두면 나중이 편해요. "이 부품을 쓰는 곳"이에요. 한 군데면 언제든 갈아탈 수 있고, 화면 전체가 그 부품 방식으로 짜여 있으면 갈아타기가 새로 만들기와 같아져요. 이 차이가 몇 년 뒤 협상력을 만들어요. 옮길 수 있는 상태를 지키는 이야기는 내 것을 가지고 나가기와 이어져요.

이것만 기억하세요

  • ·부품은 검증된 거래처예요. 안 쓰는 것보다 세지 않는 것이 위험해요
  • ·내가 안 고쳤는데 결과가 달라졌다면 부품 버전을 먼저 봐요
  • ·고를 때 마지막 칸은 "빼기 쉬운가"예요. 빼기 어려운 부품은 요금 인상까지 그대로 받아요
  • ·무료와 조건 없음은 다른 말이에요. 넣는 날 조건을 5분만 확인해요
  • ·올릴 때는 보안 먼저, 하나씩, 돌아갈 곳을 정해 두고예요
VibeCampusNew build