패스트캠퍼스 환급 챌린지

패스트캠퍼스 환급챌린지 30일차 미션(3월2일):프롬프트 엔지니어링으로 시작하는 AI/LLM 서비스 개발 강의후기

foruheon 2025. 3. 2. 17:31

본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.

 

 

최근 Google Calendar API를 연동하면서 얻은 경험과 인사이트를 정리해본다. 단순히 일정 관리 기능을 구현하는 것이 아니라, API 호출을 통한 Function Call의 개념을 깊이 이해하는 것이 이번 학습의 핵심이었다.


Google Calendar API 연동 과정에서 배운 점

1. OAuth 인증과 API Key의 차이

처음엔 API Key만 발급하면 끝날 줄 알았는데, 특정 사용자 계정의 일정을 생성/수정하려면 OAuth 인증이 필수적이었다.
이 과정에서 OAuth 동의 화면을 설정하고, credentials.json을 생성한 후, 최초 1회 인증을 진행해야 한다는 점이 중요했다.

특히, "Google에서 확인하지 않은 앱" 경고 메시지를 무시하고 진행해야 하는 점도 처음에는 헷갈렸지만, 개발 과정에서는 일반적인 절차라는 것을 알게 되었다.

2. Function 기반 API 호출 패턴의 이해

이전까지는 단순한 REST API 요청만 다뤘다면, 이번엔 Google API의 Service 객체를 활용해 Function 단위로 요청을 처리하는 방식을 익혔다.
대표적인 메서드 체인은 다음과 같다.

  • service.events().insert() → 일정 생성
  • service.events().list() → 일정 조회
  • service.events().delete() → 일정 삭제

이처럼 객체를 기반으로 Function을 체이닝하며 API를 호출하는 구조가 흥미로웠다.

3. API 호출 후 데이터 가공

일정을 조회할 때 단순히 데이터를 받아오는 것이 아니라, 특정 조건(예: 날짜, 최대 개수)에 맞게 필터링할 수 있었다.
이 과정에서 JSON 데이터를 다루는 방식도 익숙해졌고, 실제 서비스에서 유의미한 데이터를 추출하는 방법을 고민해볼 수 있었다.


 실제 기능별 활용 후기

- 일정 생성 (Create)

구글 캘린더에 특정 이벤트를 추가하는 기능을 구현했다.
JSON 형태로 데이터를 전달하여 제목, 위치, 시간 등을 입력할 수 있었고, API 호출 후 일정의 URL을 반환하는 점이 유용했다.

예상보다 빠르게 이벤트가 생성되었고, API 응답 속도가 꽤 안정적이라는 점이 인상적이었다.

- 일정 조회 (Read)

특정 날짜 범위 내의 일정을 조회하는 기능을 테스트했다.
처음에는 반환되는 데이터가 너무 많아 불필요한 정보까지 포함되는 문제가 있었는데,
이를 해결하기 위해 maxResults, orderBy 등의 파라미터를 조정하면서 원하는 데이터만 가져오는 방법을 찾았다.

실제 일정 데이터를 가져와 가공할 때, JSON 구조를 빠르게 파악하는 것이 중요하다는 걸 느꼈다.

- 일정 삭제 (Delete)

이벤트 ID를 이용해 특정 일정을 삭제하는 기능을 구현했다.
삭제 후 응답이 빈 문자열('')로 반환되는 점이 특이했는데,
이 과정에서 삭제 후 데이터를 검증하는 방법에 대한 고민도 해볼 수 있었다.


 Function Call 관점에서의 추가 학습 포인트

- Function Chaining과 API 호출 흐름

한 번의 호출로 끝나는 것이 아니라,
일정을 조회한 뒤 특정 조건을 만족하는 이벤트만 삭제하는 등의 연속적인 작업이 가능하다는 점이 흥미로웠다.
이처럼 API 호출을 조합해 여러 개의 Function을 연결하는 방식이 실무에서도 많이 활용될 것 같았다.

- OAuth 인증 과정의 자동화 필요성

OAuth 인증이 한 번만 진행되면 token.json을 통해 자동 인증되지만,
토큰이 만료되면 다시 수동으로 인증해야 하는 불편함이 있었다.
토큰이 만료될 경우 자동으로 재인증하는 로직을 추가하면 실사용에 적합할 것 같았다.

- API 비동기 처리 가능성

현재 Google Calendar API는 기본적으로 동기 처리 방식이지만,
실제 서비스에서 다량의 일정을 한 번에 등록/조회하려면 비동기 처리가 필요할 수도 있겠다는 생각이 들었다.
이를 위해 Python의 asyncio 같은 비동기 라이브러리와 결합해보는 것도 좋은 학습이 될 것 같다.

 

 

 

① 오늘자 날짜, 공부 시작 시각

 

② 오늘자 날짜, 공료 시각

 

③ 클립 1번 수강 인증 사진

 

④ 클립 2번 수강 인증 사진

 

⑤ 학습 인증샷 1장 이상 (ex. 필기 촬영, 작업물, 등)

 

 

https://bit.ly/4gL1f1o