필요성사용자가 설문을 작성하고 그 설문에 참여했을 때의 결과를 받아보는 서비스에서서비스 자체에서 제공하는 공식적인 설문 데이터의 업로드가 필요했다.직접 설문을 생성해 넣어도 되겠지만 업로드할 설문이 한 두개가 아니었고 구글 시트로 작성되어있는 리스트를 한 번에 DB 에 업로드하는 방법이 더 효율적이라 판단했다.구글 시트의 csv 파일을 활용해도 되겠지만 데이터의 구조와 관계를유지하는게 번거롭다고 생각하여 구글 API 로 데이터를 직접 가져온 다음 데이터 구조에 알맞게 가공해서 업데이트 시키는 방식을 선택했다. Google API 세팅 사용 라이브러리googleapisnpm i googleapis 1. Google Cloud 프로젝트 생성 처음 접속하면 서비스 동의 과정부터 필요하다 이후 콘솔 메뉴에서IA..
전체 글
🔥계기진행중인 프로젝트에서 AWS Lambda는 ChatGPT API 를 호출하는 핵심적인 역할을 담당한다. 사용자 요청을 받아 ChatGPT API를 호출하고, 그 결과를 분석해 반환하게 되는데, 이 기능은 프로젝트의 핵심 서비스인만큼 사용자들이 주로 사용하는 기능으로 가장 많은 요청을 받을 것으로 예상된다. 이 때문에 Lambda 함수가 요청을 처리하는 동안 대기해야하고 이 과정에서 문제점이 발생할 수 있다.AWS Lambda는 여러 요청이 들어오면 자동으로 실행 환경 수를 조정해 동시성 한도까지 스케일링을 한다. 그러나 이 동시성에는 제한이 있는데 AWS 리전 내에서 최대 1,000개의 동시 실행 환경을 제공하지만 이 한도를 초과한다면 새로운 요청이 거부되거나 대기 시간이 발생할 수 있다. 프로젝트가..
배열을 학습하고 for 문으로 넘어왔다.코틀린과 비슷하면서 다른 점이 많다. 배열 선언 javaint[] students;students = new int[2]; // 이후에 값 할당int[] students;students = new int[]{90, 80, 70, 60, 50};kotlinval numbers = arrayOf(1, 2, 3, 4, 5)val numbers = IntArray(5) // 이후에 값 할당val numbers = IntArray(5) {it + 1} 자바의 new 라는 키워드가 눈에 띈다. 자바에서 'new' 키워드는 새로운 객체나 배열을 생성하는 데 사용된다.메모리에 새로운 객체 또는 배열을 할당하고 그 메모리 주소를 반환하여 사용할 수 있게 한다.'new' 를 사용하지..
김영한의 자바 입문 강의를 통해 자바를 공부하고 있다. 섹션2의 변수를 수강하고 자바는 코틀린과 데이터 타입이 어떻게 다른가 검색해보던 중에 자바에서는 int 와 같은 데이터 타입에 대한 값에서 메서드를 바로 호출할 수 없다는 것을 알았다. 왜 할 수 없는지 찾아보니 코틀린과 달리 기본 타입과 객체 타입이 구분된다고 한다. 대부분의 입문자들이 자바에서 코틀린을 순서로 학습하는 것에 비해 시작이 이상하지만 😂 타입 ( Type ) ? 어떤 값들이 가능한지와 그 타입에 대해 수행할 수 있는 연산의 종류를 결정한다. 자바에서 예를 들어 String 타입의 변수에는 String 값 아니면 null 이 들어갈 수 있다. 변수에 타입이 선언되었지만 null 인지 아닌지를 추가로 검사하기 전에는 그 변수에 어떤 타입..
최종 프로젝트에서 애플리케이션 배포를 위해 GitHub Actions 의 파이프라인을 구축하여 EC2 인스턴스에 Docker 컨테이너를 실행시키기로 했다. 1 기술 채택 GitHub Actions GitHub 저장소를 사용해온 친숙함이 가장 크게 작용 추가적인 설치 필요 없이 GitHub 환경에서 이용 가능 공개 Repository 의 경우 특정 사용시간내에서 무료로 제공 AWS 직접 서버를 설치하고 관리하는 작업 대비 시간과 비용 측면에서 효율적 프로젝트가 불명확한 상태에서 필요한 리소스를 언제든지 늘이거나 줄일 수 있는 유연성, 확장성 온라인/오프라인 상 많은 학습 자료 Docker 애플리케이션의 구성과 종속성을 캡슐화하기 때문에 환경의 일관성을 보장할 수 있는 점 프로젝트에 사용하는 백/DB 를 단..
1 Open API Open API 는 개발자가 접근할 수 있도록 공개적으로 제공되는 프로그래밍 인터페이스이다. 일반적으로 HTTP 프로토콜을 사용하여 데이터를 주고받으며 REST , SOAP 등 다양한 방식으로 구현될 수 있다. 공개적으로 접근 가능하고 JSON / XML 형식으로 데이터를 교환한다. 개발자는 특정 API 를 사용하여 새로운 애플리케이션을 만들거나 기존 제품에 새로운 기능을 추가할 수 있다. 예를 들어 개발자는 Google Maps API 를 사용하여 개발하는 애플리케이션에서 지도를 표시하거나 위치 데이터를 활용할 수 있고 기상청의 API 를 사용하여 날씨 정보를 얻어 활용할 수 있다. ❓OpenAPI Specification OAS 는 API 디자인에 관한 명세를 말한다. API 의 ..
3주차 마무리, 중간 발표 전 각자 작업물 완료하고 목표치만큼의 전체 테스트를 다같이 수행했다. 오류 작성 페이지를 만들어서 발견한 오류를 기록, 해결상태 표시, 개선 방향을 작성했다. 에러 기록해둔다는걸 잊어서 내용이 부실하다.🤯 1. .env 파일 적용 X .env 파일에서 환경변수를 불러오지 못하고 있었다. 며칠 전에 기존에 사용하던 라이브러리에서 implementation("me.pqulschwarz:spring-dotenv:4.0.0") ⬇️ implementation("io.github.cdimascio:dotenv-java:3.0.0") 직접 호출이 가능한 cdimascio 라이브러리로 교체를 했었다. 그 이후로는 컨테이너 안에서 직접 파일을 작성해넣었기 때문에 로컬에서 문제가 일어난 줄은 ..
🚩배경 CI 연습을 하는 중에 build 를 할 때 @SpringBootTest 어노테이션이 yml 의 설정 정보를 읽어오지 못하는 문제가 발생했다.( 아래의 build 에러 로그와 동일한 contextLoads() Failed 에러 발생) 클래스를 직접 명시해줌으로써 해결은 되었지만( @SpringBootTest(classes=[ToDoListApplicationsTest::class]) ) 실제로 실행될 때 잘 읽어올 수 있는게 맞는지 의문과 불안감이 들었다. 그래서 다른 분이 동일한 오류를 겪고 .env 로 설정 정보를 관리한다길래 나도 똑같이 .env 를 활용하여 CI 를 해보기 앞서 잘 적용이 되는지 ec2 배포를 테스트해보았다. 스프링 부트 3.2.2 aws ec2 ubuntu jdk17 🚩문..
오늘 한 일 gitgub repository 생성, 템플릿 추가 ERD 수정 ERD 를 수정하다가 든 생각 그동안 연관관계를 생성할 때 별 고민없이 식별관계로 설정해놓았는데 식별관계와 비식별관계의 차이점을 정확하게 구분하고 가야지 ERD 설계를 제대로 하는 것 아닌가 하는 생각이 들었다. ERD Cloud 를 기반으로 식별관계는 파란색 키, 비식별관계는 분홍색 키로 나타난다. 식별관계 : 부모 테이블의 기본키/유니크 키를 자식 테이블이 자신의 기본키로 사용 : 반드시 부모 테이블에 데이터가 존재해야 자식 테이블에 데이터를 입력할 수 있다 : 부모 데이터가 없다면 자식 데이터는 생길 수 없다. : 요구 사항이 변하지 않을 때 강력한 정합성 보장 비식별관계 : 부모 테이블의 기본키 또는 유니크 키를 외래 키..
최종 프로젝트 기획 🚩프로젝트 기간 240226 - 240405 🚩기획 기간 240226 - 240228 🚩프로젝트 주제 영화리뷰, 모임모집 웹애플리케이션 🚩내가 맡은 기획 업무 메인 ERD 설계 주요 도메인 회원, 리뷰, 모임 여태 프로젝트들에선 최대 3개의 테이블만 작성해오다가 규모가 커지니까 어떻게 설계해야될지 어렵게 느껴졌다. 회원에서부터 시작해서 하나씩 생성해보았는데 아직 남은 기획기간 + 개발기간동안 추가되거나 수정될 부분이 있을 것 같다. 영화 모임 서비스의 경우 우리 서비스만의 기능인 오프라인 감상회 부분에서 모임 참여자 간의 소통 공간이 필요하다고 판단하여 처음에는 모임 생성 시 자동으로 생성되는 비밀 게시판을 이용한 소통 공간을 만들기로 했었다. 그런데 댓글을 이용한 실시간 소통은 함께..