개발 노트 7

ECS fargate 환경에서 FCM에 쓸 service-account.json 설정하기

로컬에서 테스트할때는 걍 디렉터리에 json 저장해주고 디렉터리 경로만 잘 GOOGLE_APPLICATION_CREDENTIALS로 환경변수 설정해주면 됨 그러나? aws ecs fargate 환경 에서는? 시크릿한 json 파일 어떻게 저장?전송?할건데~ 1. secret manager -> 돈나오니까 패스2. parameter store -> 오케이 도전! 찾아보니 fargate는 기본적으로 /tmp 경로에 임시 저장소를 제공한다고 함 1. parameter store에 firebase에서 받은 service-account.json 내용을 그대로 복붙해서 저장2. terraform에서 task definition을 설정할때 parameter store에서 내용을 읽어서 secret한 GOOGLE_AP..

왜 테이블 생성은 잘 되는데, 외래 키 추가는 무한로딩이죠?

Metadata lock 때문이었다.... 새로운 테이블들을 생성하는 쿼리들과, 기존 테이블과 외래 키를 연결하는 쿼리들을 실행하고 있는데유독 외래 키 추가만 무한로딩 걸리는 상황이 발생했다 member 테이블은 원래 있던놈이고post는 새로 생긴 놈이다  ALTER TABLE post ADD CONSTRAINT fk_post_member_id FOREIGN KEY (member_id) REFERENCES member(member_id) ON DELETE CASCADE ON UPDATE CASCADE;  처음엔 테스트 서버로 쓰는 라즈베리 파이에 너무 띄워진 서버가 많아서 힘들어하는 줄 알았다;;근데 AWS 메인 서버에도 똑같이 무한로딩이 걸리는 것이었다. 무한로딩을 기다..

웹서버와 WAS

정적 콘텐츠와 동적 콘텐츠 정적 콘텐츠로 구성된 정적 페이지는 웹서버에 의해 처리된다. 웹서버는 웹서버에 이미 저장되어있는 파일을 단순 반환 정적 콘텐츠: HTML, CSS, JavaScript, 이미지 등 정적 페이지: 고정된 정적 콘텐츠로 구성된 웹 페이지 동적 콘텐츠로 구성된 동적 페이지는 WAS에 의해 처리된다. 웹서버는 요청을 WAS로 전달하여 애플리케이션 로직에 따라 동적으로 생성된 콘텐츠를 반환 동적 콘텐츠: 사용자의 요청을 처리하고, 데이터베이스나 외부서비스들과 상호작용하며 동적으로 생성된 콘텐츠 동적 페이지: 사용자의 요청에 따라 서버에서 동적으로 생성되는 페이지 웹서버(Web Server) 예를들면 nginx가 있다. 웹서버는 클라이언트로부터 http 요청을 받고 응답을 보내는 역할을 ..

포스트맨으로 MultiPart 파일 보내는 방법!!(사진 첨부해서 요청보내기)

이것이 내가 속한 이돈이면 팀의 게시글 작성 요청 Dto의 모습이다. 이번에 자바 17을 쓰는 김에 야무지게 record 클래스를 써보았다. 이것은 컨트롤러다. Json을 받을때는 @RequestBody를 썼는데, 이번에는 multipart/form-data를 받아서 @ModelAttribute를 붙여야 했다. 아무튼! 우리 프로젝트는 게시글 작성 요청에 이미지 파일이 multipart 형태로 담겨져 와서, 이를 포스트맨으로 테스트 할 수 있는 방법을 찾아보았다. 위에처럼 Body 탭에 form-data를 선택하면, Key의 타입을 Text과 File 중에 선택할 수 있는데, File로 선택하면 Value로 여러개의 파일을 첨부할 수 있다!! 맨날 json만 보내보다가 이렇게 보내보니 조금 신기하다. 어..

페어 프로그래밍(Pair programming)을 경험하는 중에 작성하는 글

페어 프로그래밍이란? 페어 프로그래밍이란 애자일(Agile) 개발 발법론 중 하나로, 하나의 개발 가능한 PC에서 두 명의 개발자가 작업하는 방법이다. 네비게이터(navigator)가 전략을 제시하고 드라이버(driver)가 실제 코드를 작성하며, 역할을 각자 번갈아가며 수행한다. 짝 프로그래밍이라고도 한다. -------------- 페어 프로그래밍이란 용어는 사실 오늘 제대로 알게 되었는데, 나와 친구가 현재 진행중인 프로젝트를 협업하는 방법과 유사한 점이 많아서 신기해서 포스팅한다. -------------- 6월 말 쯤이었을까, 나를 포함한 친구 셋이서 교내 공모전에 나가기로 결정 했다. 프론트는 1명, 백은 2명이서 맡게 되었다. 백에서 사용하는 언어로는 자바와 파이썬이 후보였는데, 파이썬을 이..

[Spring] java.sql.sqlexception 소켓에서 읽을 데이터가 없습니다 에러 / c3p0, commons dbcp2 커넥션풀 사용

스프링, 이클립스, 오라클DB, c3p0을 이용해서 개인 프로젝트를 하는 중이다. 사용자의 지시로 디비에 접근하는 명령은 괜찮은데, 서버에서 스케줄링으로 디비에 접근하려고 하면 소켓에서 읽을 데이터가 없다고 나온다. 이거 고치려고 2분만 2분만 하면서 코딩하다가 12시에서 새벽 3시 반이 되었다. 근데 못고쳤다. 코드를 한줄 한줄 로그를 찍어서 테스트했다. 내 코드는 코드를 실행하면서 dao가 c3p0의 ComboPooledDataSource 커넥션풀에서 커넥션을 가져와서 DB에 연결한다. 커넥션풀을 통한 db 연결이 처음엔 잘 된걸 보면, 프로그램이 돌아가다가 중간에 이 연결이 끊기는 것 같다고 추측했다. 9월 1일 목요일 오늘 학교에 등교해서 밥먹기전에 한번 돌려봤는데 된다. 어이가 없네 두고보자. ..

[Spring] 스프링 - 리액트 연동 과정에서 생긴 CROS 에러

프론트엔드(리액트)와 백엔드(스프링)을 연동하는 과정에서 아래와 같은 에러가 났다. 나는 스프링을 이용해 백엔드 서버를 하고 있고, 친구가 리액트를 이용해 프론트엔드를 맡고 있다. 로컬 환경에서 postman을 이용해 응답 테스트를 할 때는 잘 돌아갔다. AWS에서 서버를 만들어서 톰캣서버를 만들고 프로젝트를 올려 postman을 이용해 응답 테스트를 할 때도 잘 돌아갔다. 크롬에 새 창을 켜서 url로 get요청을 보내면 잘 작동한다. 그러나!!! 근데 리액트랑 연동만 하니 CROS 에러가 나타났다. CORS란? Cross-Origin Resource Sharing(교차 출처 리소스 공유)의 약자이다. 정확히 CORS가 뭔지는, 프로젝트가 끝난 후 시간이 생겼을때 공부해서 포스팅을 하도록 하겠다.(추후..

1