[졸업프로젝트] NewsFit 개발 회고
·
Server
안녕하세요, Sean 입니다. 홍익대학교 4학년을 무사히 마치며 졸업 프로젝트도 끝이 났습니다. 졸업 프로젝트 설계와 구현 과정에서 있었던 일들을 이야기하고자 글을 쓰게 되었습니다. 저는 NewsFit 프로젝트에서 인프라 설계 및 구축, 추천 시스템 서비스, 웹 스크래핑 서비스 구현을 담당했습니다.3-tier architecture 본 백엔드 서버 아키텍처는 3계층 구조를 기반으로 설계되었으며, 확장성, 보안성 및 고가용성을 중점적으로 고려하였습니다. 각 구성 요소의 역할과 기능은 다음과 같습니다. EC2 인스턴스 및 로드밸런서백엔드 애플리케이션이 배포된 인스턴스로, 프라이빗 서브넷 내에 위치합니다. 오토 스케일링을 활용하여 트래픽의 증가 및 감소에 따라 인스턴스 수를 자동으로 조정함으로써 시스템의 탄력..
DayCarat 인프라 구조 설계: 내가 한 달 만에 설계부터 구현까지 성공적으로 마칠 수 있었던 이유
·
Server
DayCarat 인프라 구조 설계: 내가 한 달 만에 설계부터 구현까지 성공적으로 마칠 수 있었던 이유올해 2월까지 DayCarat 서비스 개발을 담당했습니다.설계 중 많은 고민 사항이 있었고, 저처럼 프로젝트를 시작하는 입장에서 고려할 만한 방법이 어떤 것이 있을지 공유해 드리고자 다음 게시글을 작성했습니다.요구사항 파악하기CMC 14기로 활동하며 구성된 팀에서 만든 서비스로, 설계 당시 여러 요구사항이 있었습니다.관계형 데이터베이스에서 여러 테이블을 두고 복잡한 쿼리를 작업할 수 있는 구조를 가질 것모두에게 보내는 공지사항 알림 뿐 아니라 특정 작업 완료 시 개인에게 보내는 알림 서비스를 구현할 것외부 API(GPT)를 호출할 수 있고, 이는 비동기적으로 호출할 것팀원과 원활한 소통을 할 수 있도록 ..
Github Actions: ssh-aciton IPv6 지원
·
Server
https://aws.amazon.com/ko/blogs/aws/new-aws-public-ipv4-address-charge-public-ip-insights/ New – AWS Public IPv4 Address Charge + Public IP Insights | Amazon Web Services We are introducing a new charge for public IPv4 addresses. Effective February 1, 2024 there will be a charge of $0.005 per IP per hour for all public IPv4 addresses, whether attached to a service or not (there is already a char..
[Terraform] state locking을 위한 s3, ddb 설정하기
·
Server
Terraform의 경우 Github과 같은 VCS에서 프로젝트를 공유하기엔 한계가 있습니다. AWS 환경을 테라폼으로 구축한다고 가정합시다. terraform apply 명령어를 실행하는 경우, 테라폼은 연결되어 있는 계정을 통해 인프라스트럭처를 프로비저닝 합니다. 그런데, 여러명이 테라폼 프로젝트를 사용중이라면 어떨까요? 유저 A와 B는 Latest 버전의 테라폼 프로젝트에서 개발을 시작했습니다. 유저 A는 EC2 instance의 유형을 변경하고, 유저 B는 EC2 instance의 security group을 변경합니다. 이 때, 두 유저가 terraform apply 를 동시에 실행하여 한 계정에 적용을 시도합니다. 먼저 A와 B 모두 state 파일을 읽습니다. 그 후, B의 변경사항이 먼저 ..
[서버] Github Actions: 다양한 명령 내리기
·
Server
1. Github Actions 로 특정한 파일만 가져오기 기본적인 EC2 + Github Actions + Docker Hub 으로 배포환경 구축하시는 분들께서 쓰시는 방법: 주변에서도 많이들 사용하는 방식으로, docker-compose up을 위한 docker-compse.yaml 파일을 다음과 같은 방식으로 가져옵니다. 1. EC2에 접근하여 docker-compose.yaml을 직접 생성한 후 워크플로우 실행 2. (제가 기존에 사용했던 방식) docker-compose.yaml을 secret/variable 으로 등록한 후 github actions에서 ssh 접근 후 해당 파일을 쓰는 스크립트 실행 두가지 모두 불편한 점이 있습니다. 바로 docker-compose.yaml 파일이 수정될때마..
[Docker, AWS, Spring] docker-compose시 환경변수 전달하고 스프링부트 application.yaml에서 사용하기
·
Server
저는 보안 전문가가 아닙니다.하지만 개발자라면 보안을 고려하지 않을 수 없겠죠.제가 사용했던 기존의 방법입니다.application.yaml파일을 github repository secret으로 두었기 때문에 언뜻 보면 안전해 보입니다.하지만 잘 보시면 application.yaml을 만든 후 도커 푸시를 진행하죠.. private docker를 사용하지 않는다면, repo 와 image 이름을 아는 누구나 제 image를 pull하고 열어볼 수 있습니다.그렇기 때문에 저는 완전히 public한 장소에 저의 모든 환경변수를 넣은 것이죠.  저희가 수정할 방법입니다.ec2에 .env 파일을 만들고, docker-compose up 시에 env를 설정하여 받으면 됩니다. 그림을 보시면 image에는 환경변수..
[Slack API] 슬랙 API를 통한 요청 가이드 - 외부 요청 차단 (2)
·
Server
https://popcorn-overflow.tistory.com/15 [Slack API] 슬랙 API를 통한 요청 가이드 (1)https://api.slack.com Slack은 생산성 플랫폼입니다 Slack은 팀과 커뮤니케이션할 수 있는 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다. slack.com Slack을 통해 업무를 보시는popcorn-overflow.tistory.com 앞서 기본적인 응답 주고받기 수준의 기능을 구현하였습니다.하지만 여기서 보안적 이슈가 등장하는데요,저희는 슬랙 내부에서 봇을 사용하고 있는 유저와 그렇지 않은 유저들을 구분하고, 그렇지 않은 유저들의 접근을 차단해야 합니다.사실 public하게 이용하는 서비스라면 해당 과정은 생략해도 될 것 같..
[Slack API] 슬랙 API를 통한 요청 가이드 (1)
·
Server
https://api.slack.com Slack은 생산성 플랫폼입니다Slack은 팀과 커뮤니케이션할 수 있는 새로운 방법입니다. 이메일보다 빠르고, 더 조직적이며, 훨씬 안전합니다.slack.comSlack을 통해 업무를 보시는 분들을 위한 업무 자동화 도구 Slack API입니다. Slack API를 이용하면 여러 채널을 개설하여 서버 관리 자동화 구현이 가능합니다.여러분의 입맛대로 기능 구현을 할 수 있도록 슬랙 개인 서버로 요청 주고받는 방법에 대한 설명을 적겠습니다. 서버 -> 슬랙으로 메세지 보내기 (WebHook을 통해 슬랙 채널에 알림 보내기)- 웹훅을 이용하면 '슬랙 채널에 알림 보내기'가 가능합니다.- 슬랙 채널에 알림을 보내면 채널에 있는 모든 사용자가 해당 메세지를 읽을 수 있습니..
Sean 션
'Server' 카테고리의 글 목록