8. 자원 연결하기 (바인딩)
앱이 데이터베이스나 저장소를 쓸 때 접속 정보를 옮겨 적지 않습니다. 화면의 의존성 연결에서 무엇에 붙일지 고르기만 하면 됩니다.
연결하면 환경변수로 들어옵니다
연결한 자원의 접속 정보 한 벌(주소 · 포트 · 계정 · 비밀번호 · 이름)이 환경변수로 앱에 들어옵니다.
받을 이름은 표준 이름으로 이미 채워져 있습니다. 화면의 기본값 자동 이 그 뜻입니다 — 따로 설정할 것 없이 코드에서 그 이름으로 읽으면 됩니다.

화면 안내 그대로입니다 — "코드에서 이 이름으로 읽으면 됩니다. 이미 쓰는 이름이 있으면 바꾸세요."
이미 쓰는 이름이 있으면 그 칸에서 바꾸면 됩니다. 바꾼 이름으로 들어오므로 코드나 설정 파일을 고칠 일이 없습니다.
값이 바뀌면 앱이 알아서 다시 뜹니다. 비밀번호 같은 값은 화면에 다시 보이지 않고 앱에만 전달됩니다.
무엇에 붙이든 같은 방식입니다
| 고르는 것 | |
|---|---|
| 새로 설치 | 그 자리에서 새로 깝니다 |
| 설치된 자원 | 이미 깔아 둔 PostgreSQL · Redis 등 → 5장 |
| 외부 자원 | 클라우드 DB · S3 같은 바깥 것 → 7장 |

앱은 어느 쪽인지 모릅니다. 셋 다 같은 이름으로 들어오기 때문에, 나중에 클라우드에서 내부로 옮기거나 그 반대로 가도 앱을 고치지 않습니다.
지금 안 정해도 됩니다. 선택 안 함 으로 두면 자리만 잡히고 나중에 채우면 됩니다.
만든 뒤에 바꾸는 곳은 앱 → 설정 → 의존 자원 설정 입니다. → 6장 · 나중에 연결을 바꾸기
권한과 공간은 앱마다 갈립니다
데이터베이스는 같은 것에 붙어도 앱마다 읽기 전용인지 읽고 쓰기인지 연결할 때 고릅니다. 그리고 앱마다 전용 계정과 공간을 받아서, 다른 앱의 데이터가 보이지 않습니다.

받아 쓰는 것은 쥔 자원(grants) 에서 확인합니다. BOUND 는 실제로 붙어 있다는 뜻입니다.

자원 종류마다 다릅니다. 메시지 큐처럼 티어 선택이 없는 자원도 있고, 메시지 큐는 지금 한 계정을 함께 씁니다 — 앱마다 갈리는 것을 전제로 설계하지 마세요.
앱이 정하는 것도 있습니다
메시지 큐의 토픽 이름과 컨슈머 그룹은 들어오지 않습니다 — 앱이 정합니다.
컨슈머 그룹 이름이 겹쳐도 아무도 막지 않습니다
두 앱이 같은 그룹 이름을 쓰면 에러 없이 그대로 붙고, 그때부터 메시지를 나눠 갖습니다 — 한쪽이 절반만 처리하는 것처럼 보입니다.
그룹 이름은 앱마다 다르게 정하시고, 앱 이름을 그대로 쓰는 것이 가장 안전합니다.
알아서 막아 주는 것들
| 쓰는 곳이 있으면 못 지웁니다 | 지우려 하면 누가 쓰고 있는지 목록을 보여줍니다 |
| 비밀번호를 함부로 안 바꿉니다 | 설정을 다시 적용해도 기존 비밀번호는 그대로입니다 |
| 맞는 것끼리만 붙습니다 | 데이터베이스 자리에 저장소를 꽂을 수 없습니다 |
dev 와 prod 가 안 섞입니다 | dev 앱이 prod 자원에 붙는 일이 구조적으로 없습니다 |
연결이 안 될 때
등록 화면의 연결 테스트는 PaaS 쪽에서 쏘는 것이라, 테스트는 통과하는데 앱에서만 안 되는 경우가 있습니다.
프로젝트는 기본적으로 바깥으로 나가는 통신이 막혀 있습니다. 외부 자원에 붙일 때 앱에서만 안 되면 그 경로를 먼저 보세요. → 7장
다음 → 9. 인증서와 주소