🍎 공공데이터에서 얻은 데이터를 어떤 방식으로 핸들링해야 할지 고민을 했습니다.
🍎 데이터 처리를 고민하던 중 공공데이터에서 OpenAPI 형식으로 API 서버를 통해 데이터를 받을 수 있는 방법을 발견했습니다.
❓ 궁금증이 생겼습니다. 현재 로컬에서 개발하는데 어떻게 OpenApi에 데이터를 가져올 수 있는 건지?
❓ 인터넷에 프로젝트를 연결할 적이 없는데 어떤 방식으로 인터넷 연결이 되어 데이터를 요청할 수 있는 건지?
- 너무나도 당연하게 숨 쉬듯 인터넷을 사용하고 있어 개발 환경에서 인터넷을 어떤 방식으로 이용하고 있는지 알고 있지 못해 생긴 의문점이었습니다.
- 이전의 생각으론 WAS 서버를 개발하고 개발한 서버를 “배포”를 해야 인터넷 통신을 할 수 있다는 생각을 하고 있었는데 이런 생각이 틀리다는 것을 알았습니다.
- 인터넷(와이파이)을 사용하고 있는 동안 외부 통신을 이루는 과정은 다음과 같습니다.
- 로컬에서 실행하는 서버(Spring) Port 번호 할당(IP를 할당하는 것이 아닌 한 PC에서 다른 포트를 열어줍니다.)
- 라우터를 통해 인터넷 통신
- 요청을 받은 서버에서 응답
- 응답이 로컬에서 실행 중인 서버에 도착
🍏 위의 과정을 통해 인터넷이 연결된 상황일 때 통신을 할 수 있었습니다. HTTP 통신 시 사용자의 통신을 돕는 Servlet을 사용하고 더 아래에 소켓을 사용한 통신이 존재한다는 것 또한 알게 되었습니다.
💡나아가 생각해 보기
❓ 오직 라이브러리만을 사용해 개발을 진행한다는 생각을 갖고 있을 때, 프로젝트 초기 라이브러리들은 어떤 방식으로 다운을 받게 되는 것일까?
- 초기 자바 개발 환경 세팅 시 JDK를 다운로드하면 모든 라이브러리들을 다 가져오는 것이라고 생각했습니다. 위 이야기는 틀렸습니다. 하지만 위와 같이 생각하게 된 이유는 아래 이미지에서 비롯된 잘못된 추측이었습니다.
- 위 사진은 IDE 환경에서 제공하는 의존성을 보여주는 것이지 라이브러리를 처음부터 갖고 있다는 말이 아닙니다.
❓ 그렇다면 라이브러리는 어떤 방식으로 가져오는 것인가요?
- 정답은 repositories in Gradle script에 있었습니다. 프로그래머가 dependency에 의존성을 추가하고 Gradle Refresh를 수행하게 되면 “인터넷”으로 연결한 mavenCentral 공간에서 라이브러리를 다운로드하는 방식으로 프로그래머에게 제공되는 것이었습니다.
❓ 인터넷에서 자료를 찾아보던 중 Ip Loopback이라는 것이 있고 이는 다른 이름으로 localhost라고 불리는데 was server 띄우는 게 localhost:8080 아닌가? 그렇다면 ip를 할당하는 것이 아닌가?
- loopback은 논리적인 인터페이스 카드를 의미하며 자신이 송신한 패킷을 그대로 수신하는 기능을 갖고 있습니다.
- That the loopback interface is used to access the computer itself, while a web server is used to access content that is being served by the web server. and web server has specific port that was given by OS.
- 헷갈리는 것을 방지하기 위해서 loopback interface는 127.0.0.1로 명시해 사용하기도 합니다.
📚 Reference
'TIL' 카테고리의 다른 글
[Python] Thread 설계 의도를 파악한 성능 개선. 7초에서 3초로 (0) | 2023.04.11 |
---|---|
파이썬 성능을 높이고 싶을 때 알아야 할 것 (0) | 2023.04.06 |
Hard, Soft Delete and etc.. (0) | 2023.04.03 |
Spring Resolver, Json and ObjectMapper 내부에선 어떤 일들이 발생할까? (0) | 2023.04.03 |
개인 프로젝트 <내 주변에 수영장>, Project Setting (0) | 2023.04.03 |