Coding History 214

AWS 자동 배포

자동화는 깃 push 하면 깃에서 도커 이미지를 빌드하고, 도커 이미지를 서버컴퓨터에 pull한다.이후 서버 컴퓨터에 해당 이미지가 서비스가 가능한지 아닌지 판단이후 가능하다가면 해당 이미지로 적용후 예전 이미지는 지운다. 이게 자동 배포의 방법. (port는 예를 들자면 구형 8082, 신형 8083으로 번갈아가면서 사용되게함.) 그니까 신형이 나중에 구형이 된다면 새로들어온 놈은 8082에 들어가게 됨.그니까 이게 자동으로 되게 해야됨.자동화를 위해서 socat과 python 설치yum install socat -yyum install python -y그리고 기존 이미지 삭제git action으로 동작하기 때문에프로젝트 루트 디렉토리에 github/workflows/deploy.ymlname: 'de..

Coding History 2024.11.14

AWS 서버 구성, 도메인 연결.

그 사실 도메인 구입할 때 설정을 제대로 못하고 하긴 해서 깡통이긴한데 귀찮아서 그냥 깡통으로 수업들었다. (이미 Oracle로 서버 배포까지 완료한적은 있지만 도메인 연결까지는 안해봐서 수업은 들음.)그리고 또 AWS는 처음이라..여튼 어제 했던 그 terraform으로 서버 구축을 했고,이렇게 설정한 대로 인스턴스 생성 잘 됐음.그리고 깃으로 도커 로그인을 서버 PC 콘솔로 진행하고.. Mysql 이미지 가져오고..다 해봤던거임.근데 이제 nginx를 사용하는건 안해봐서.여튼 이것도 서버 컴퓨터에 도커로 다운 받았고,이런식으로 접근도 가능하게 됐다.이렇게 도메인도 설정해줌.그리고 좀 시간을 가진 뒤에 이 설정을 저장하면된다. 이제부터는 도메인 구입때 했던 설정이 누락되어서 나는 따라하지 못하는 것 같..

Coding History 2024.11.13

AWS S3, Terraform CLI

도메인 구입도 해보고, AWS에서 IAM으로 root 로그인 말고 사용자?로그인도 해보고..여튼 AWS의 서버 컴퓨터에 더 쉽게 명령어를 날릴 수 있는 Terraform을 사용해보자우선은 awscli를 다운 받았고 로그인 진행함.그리고 terraform도 다운 받음.테스트용으로 하나 만들어서 테라폼 파일main.tf도 생성함.terraform init으로 initalized도 진행해서 위에 terraform 폴더도 생성됨!terraform plan으로 상태 점검 한번 해봤다.이제 VPC를 만들어서 AWS 서버에 띄워보자.이걸 이제 띄우려면 main.tf를 작성하면 된다.여기서 왜 AWSCLI를 사용하느냐?원래 AWS 콘솔에서 클릭해가면서 서버 설정을 하면 되는데 이렇게 환경을 준비하면 명령어로 효율적으로..

팀플) API 오류 해결, 서버 재배포

위 이미지와 같이 갑자기 API 요청들이 먹통이 됐는데, 처음엔 왜이러지 싶어서 파이썬 서버를 열어서 다시 확인해봤다.똑같다.곰곰이 생각해보니까 아마 MAP API를 지금 스프링에서도 연결하면서 문제가 된 것 같다는 생각이 들었다.그래서 설정을 추가함.위가 내 원래 서버, 도커서버인데.. 안되네?그래서 도커 컴포즈에서 url을 고정 시킬 방법을 찾아봄.아 그럴 필요없네 알아서 컨테이너 이름으로 url이 설정된다고 한다.걍 설정 지워서 해결함.보니까 내 API에서 보내는 요청은 IP 주소 형식이고 Spring에서는 웹사이트 url인데 이거 설정하기 귀찮다,,근데 또 별게로 항상 켜두고 테스트를 해서 몰랐는데 배포한 서버에서는 리소스 관리 때문에 일정시간 접근이 없을시에 서버를 끄는데 이 때 DB 접근이 필..

서버 DB 영속성 부여 -> 그냥 연습용 예제

뭐 간단한 프로그램을 연습을 위해 배포한거긴 하지만 지금 프로젝트상 ArrayList에 데이터를 저장해서 서버가 꺼졌다가 켜지면 데이터가 손실된다. 이에 해결책은 다들 알다시피 당연 영속성을 가진 DB를 도입하는 것.그래서 일케 진행함.난 예전에 도커의 볼륨을 행성 데이터랑 유성우, 혜성데이터를 저장한 적이 있어서 조심스럽게 접근했다. 강사님은 걍 싹 지우는 명령어와 함께 하라고 했는데 이렇게 진행함. (언제 또 뭘 수정해야될지 몰라서..)여튼 3306은 프로젝트, 또 3307포트는 이미 파이썬 프로젝트에 사용중이라 3308로 열어줬고DBeaver에서도 연결 성공함.이제 JPA로 쿼리를 날려주는 거 구현만 하면 된다.의존성 추가해주고yml에 DB 설정도 추가함.surl 엔터티화까지 시키고, (Articl..

Coding History 2024.11.11

팀플) Google Maps API 백엔드 통신 및 react-toastify 로 자연스러운 UI/UX 구현

이제 대충 구색은 맞춰놨으니까, 백엔드로 위도 경도를 전송할 수 있게 하면 된다.근데 그전에 시큐리티 설정부터 만져야될듯?그리고 또 그전에는 확인 버튼이랑 저장 버튼도 만들었다.검색내 위치로 저장대충 일케 만들어두고 일단 함수는 깡통이다.그럼 이제 데이터가 어떤 방식으로 전송되는지 부터 확인해야하니까.아무대나 찍고 버튼 클릭하니까 lat, lng이 출력된다. 이제 이걸 갖다가 백엔드랑 엮어주면 됨.우선 지금 로직을 짜기 위해서 Location에 대한 컨트롤러 서비스를 작성하고 있는데, 가만 생각해보니까 관측 위치를 하나만 저장할 수 있다. 왜? 유저 테이블에 위경도가 있으니까. 근데 그렇게 하기보다는 Location 테이블을 나눠놓는편이 수월할 것 같다는 생각이 들어서. 일단 그렇게 진행해보는게 좋을듯그..

git hub action (CI / CD)

fly.io에 배포하는 것 까지 해봤었는데 무중단 CI / CD 를 기본으로 깔고 간다.그러니까 서버 점검 등을 위해서 사이트를 정지시켜놓을 필요가 없다는 것.근데 이걸 git에 push 했을 시에 자동으로 fly 서버를 갱신할 수 있게 하는 것이 있다고 한다.그게 바로 git action인데. git branch에 특정 이벤트가 생길시 작동하게 설정을 할 수 있다.일단 깃 리포지터리에서 action 설정을 이렇게 해주자.save 해주고.이제 git 에서 Secret을 추가해줘야되는데,본인 깃 리포지터리에서 설정해주고. 여기 넣을 토큰 키 값을fly.io에서 발급 받아서 추가.여기다가 복붙.여기 파일 체크한번 해주고.# See https://fly.io/docs/app-guides/continuous-d..

Coding History 2024.11.07

도커. fly.io

나는 이미 천체 관측 API 를 파이썬으로 만들면서 배포까지 다 해봐서 도커에 대해서 약간의 이해도는 있다.도커 이미지는 밀키트와 비슷하지만 훨씬 더 편리합니다.비유하자면, 밀키트는 밀키트인데 조리도구(가스레인지, 냄비 등)까지 포함된 밀키트라고 보시면 됩니다.그래서 현대의 웹 서비스에서 주류기술로 자리잡았습니다.컨테이너(Container)컨테이너는 애플리케이션과 그 필요한 모든 것을 포함하는 격리된 환경입니다.가볍고 빠르게 시작되며, 다른 컨테이너나 호스트 시스템과의 충돌 없이 독립적으로 실행됩니다.이는 개발, 배포, 실행을 일관되게 만들어 줍니다.이미지(Image)이미지는 컨테이너를 생성하는 데 사용되는 템플릿으로,애플리케이션 실행에 필요한 코드, 라이브러리, 환경설정 등이 포함됩니다.읽기 전용이며,..

Coding History 2024.11.06

팀플) Spring CRUD와 API 데이터 엮기 (Google Maps API)

이제 기존에 만들어둔 Spring에서의 API와 천문 데이터 API 와 엮어주면 된다.그럼 엮기 전에 생각해볼 것이 있는데, 내가 만든 API 대부분이 위도 경도가 거의 필수로 필요하다. 그렇다면? 일단 요청에 위도 경도를 태워 보내야한다. 그래서 사용자가 주로 관측하는 위치를 저장을 해둬야하는데 테이블에 위도 경도 칸이 있을 필요가 있었다.확인해보니까 이미 있더라 과거의 나 칭찬해,,그럼 일단은 이 정보를 저장할 로직, 그리고 정확한 위치를 받아서 정확한 위경도를 저장해야될테니 지도와 관련된 API를 연결해줘야겠다! 라는 결론으로 도달.그래서 뭐부터 하냐?Google Maps APIGoogle Maps API 연결부터 하자.Google Cloud Console로 다시 이동. 우리 팀플을 위해서 만들어둔..

팀플) Merge 기록

이제 나도 본격적으로 프로젝트에 다시 투입되었기 때문에 (지금 구글 맵 API 연결중이였다.) 병합을 한번 진행하고 개발하는 것이 좋다고 판단했다.나는 프론트에 손을 대지 않을 것이라고 호언장담하였지만, 구글 맵 API 연결 도중 프론트로 접근해야된 다는 것을 깨닫고..(당연한게 앞에서 뒤로 위도 경도를 전송시켜줘야하니까..) 더 꼬이기전에 진행하자고 한 것.머지는 무사히 마쳤고,기능 자체는 잘 되는데, 마지막 팀원의 머지까지 마치고, 프론트의 행성들이 망가진 것을 확인했다. 이건 이제 저쪽에서 해결할테니 그대로 넘겨주면 될 듯..백엔드 기능은 당연 문제 없이 작동한다.팀원 1, 2가 메인의 행성, 그리고 상세 페이지의 행성을 다뤄서 머지하면 망가질 걸 예상은 하고 있었어서 이건 알아서 아마 해줄 것이다..