잔망준형 두서없는 컴퓨터공학 기술 블로그 전체 글 (49) 썸네일형 리스트형 GitHub Actions를 이용한 EC2 CI/CD 관련 아찔한 사고 CI/CD를 처음으로 도입해 봤는데 아찔한 경험을 했다. (아찔한 경험을 지금 해서 오히려 다행이다..) 현재 개인프로젝트 중 Next.js가 AWS EC2에 배포되어 있는 프로젝트가 하나 있는데,지금까지는 그냥 GitHub에 push 후 ssh로 접속하여 [pull -> build -> pm2]를 수행하는 쉘스크립트를 작성해 두고 실행하고 있었다. 그러다가 ssh를 접속하는 과정도 슬슬 귀찮아져서 GitHub Actions를 이용해 보기로 했다.deploy.yaml에 그냥 main에 소스 코드에 변경을 감지하고 github actions를 이용하여 ssh로 ec2접속 후 위의 과정을 자동으로 진행하도록 작성해 두었다. 문제의 deploy.yaml을 보자.name: Next.js to EC2on: pu.. [트러블슈팅] EC2 배포 후 세션 유지가 안되는 문제 feat. http와 쿠키 문제 상황웹 애플리케이션 개발 프로젝트에서 발생한 문제이다. 나는 백엔드 개발 팀에서 개발을 맡았고, 우리의 시스템은 일단 세션 방식으로 인증이 구현되어 있었다. 백엔드에서 간단하게 API 프로토타입을 완성하였고, 프론트엔드와 한번 API 연동 테스트를 진행하려 했다. 프론트엔드 쪽에서 API 테스트를 하기 편하도록 나는 AWS EC2에 백엔드 서버를 배포하고 엔드포인트를 안내했다. 아니 근데 분명 로컬에서 내가 프론트엔드와 테스트를 진행했을 때는 인증이 잘 처리되었는데, 이상하게 EC2 환경으로만 넘어가면 로그인을 해도 세션 유지가 안된다. 백엔드에서는 로그를 찍어 로그인 후에 정상적으로 세션을 생성하는 것을 확인했다. 원인은 무엇이었을까?원인 분석일단 우리는 세션에 대한 정보를 알기 위해서는 클라이언.. AWS Solutions Architect AWS Solutions Architect지금까지의 SA의 역할에 대해 고민해 본 결과, 크게 세 가지의 책임이 있는 거 같다. 첫 번째, 사용자의 불편함이 없도록 하는 것이 최우선이다.두 번째, 자원(비용)은 한정적이다. AWS의 서비스들을 파악하고 각 서비스들을 주어진 자원 내에서 최대한 효율적으로 아키텍처를 구성해야 된다.세 번째, 결국 내가 구축한 환경에서 돌아가는 서비스를 개발하는 개발자가 존재하기에, 개발자들이 개발하기 편한 환경을 만들고, 소통해야 한다. 그 외에도 당연하게 권한 관리나, 보안에 대해서도 잘 관리해야 한다. [데이터베이스] 인덱스란 무엇인가? 인덱스란?데이터베이스에서의 조회 성능을 끌어올려주기 위한 기능이다.인덱스란 직역 하면 색인인데 즉, 원하는 빠르게 데이터를 찾기 위해 먼저 찾아보는 목차 같은 느낌이다. 인덱스가 없는 경우에는 FTS(Full Table Scan)로 데이터베이스의 모든 항목을 순차적으로 스캔하여 원하는 데이터를 찾는다. 듣기만 해도 오래 걸릴 거 같은 방식이다.인덱스 알고리즘B-Tree ( Balanced Tree )인덱스 종류클러스터링 인덱스데이터베이스의 실제 데이터 자체가 정렬되고 그에 대한 인덱스가 생성되는 방식이다.얘는 실제 데이터는 하나이기 때문에 클러스터링 인덱스 또한 테이블 당 하나씩만 존재한다.보통은 Primary Key 필드에 자동으로 생성된다. 15를 찾는 상황이 있다. 인덱스 중 10에 접근해서 10 .. [네트워크] HTTP와 HTTPS의 대해 자세히 알아보자 HTTPHyperText Transfer Protocol로 약자로 웹에서 데이터를 주고받기 위해 사용되는 프로토콜이다.HTTP는 단순히 데이터를 전송하기 위한 프로토콜이기에 취약점이 다수 존재한다. 먼저, 데이터가 평문 형태로 전송되기에 중간에 누군가가 데이터를 들여다볼 수도 있고, (스니핑)누군가 요청을 가로채서 데이터를 악의적으로 변조해도 이를 검증할 방법이 없다. (중간자공격) 이 문제점을 해결하기 위해서 새로 나온 프로토콜이 HTTPS이다.HTTPSHTTP + Secure로 HTTP의 보안 취약점을 해결하기 위해 나온 프로토콜이다.SSL/TLS 프로토콜을 이용하여 데이터를 암호화하여 전송하고, SSL/TLS 인증서를 이용해 웹 사이트의 신뢰성을 검증할 수 있다. SSL/TLS를 이용한 데이터 암호.. [Java] JVM과 Garbage Collection Garbage Collection이란?JVM의 메모리 영역 중 Heap 영역에 동적으로 할당된 메모리 중 더 이상 사용되지 않는 메모리를 찾아 제거하는 과정이다.Heap 영역에 동적으로 할당되는 메모리들은 참조 타입의 변수의 데이터이다. Object 클래스를 상속받는 모든 아이들, 간단하게 객체라고 생각하면 된다.Garbage Collecion 동작 과정GC가 동작하면 메모리 영역을 스캔하며 각 객체가 Garbage Collection의 대상의 Reachable 여부를 판단한다.여기서 Reachable이란 객체가 참조되고 있는 상태이다.아무 곳에서도 참조하고 있지 않는 객체는 가비지 컬렉션의 대상인 Unreachable이고 스캔 이후 이러한 Unreachable 객체의 할당을 해제한다.이후 마지막으로 메.. DTO에 Getter가 필요한 이유 직렬화, 역직렬화에 필요하기 때문 RESTful API에 대해 정리해둔 글 URI 명명 규칙대문자는 사용하지 않는다.URI 경로 끝에 '/' 를 쓰지 않는다.URI 경로 중에 이름이 너무 길어지는 항목에 대해서는 '-'를 이용해서 가독성을 높인다. 이전 1 2 3 4 5 ··· 7 다음