분류 전체보기
-
[Trouble Shooting] AWS CloudFront(CDN)을 사용할 때 발생하는 CORS 문제 (헤더 포워딩)백준 알고리즘/Problems 2024. 7. 8. 16:48
오류 환경Chrome browserAWS CloudFrontSpring Boot(Spring Security)오류 내용 브라우저에서 서버로 요청을 보낼 때 CORS 오류 발생했다. (도메인 이름은 변경했다)Access to fetch at 'https://example.com/api/resource' from origin 'https://yourdomain.com' has been blocked by CORS policy: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Headers' header is present on the requested resource. 기존 프로젝트에 Spri..
-
[회고] 전공자 대학생 AWS SAA 자격증 합격 후기회고록/후기 2024. 7. 7. 21:25
왜 취득했는가?AWS 서비스를 사용하여 웹 애플리케이션을 구축해 배포하였는데, 자습서와 핸즈온을 보며 동작하는데 집중해 배포한 경험이 있다. 그러다 보니 보안 그룹 설정을 실수로 누락하였고 최종적으로 EC2 인스턴스에 공격을 당하는 경험까지(...) 했다. 현대의 다양한 서비스가 클라우드 컴퓨팅을 활용해 배포되는데 실무에서 이런 실수를 하게 되면 정말 큰일이라고 생각되어 AWS 자격증을 취득해야겠다고 생각했다. 또한 AWS SAA는 "어떻게 하면 고가용적, 비용 효율적, 고보안적, 운영 효율적으로 아키텍처를 설계할 수 있는가?"를 중점적으로 물어보는 시험이기 때문에 "서버 아키텍처가 전반적으로 어떻게 구성되는가?"에 대한 이론적 지식을 얻을 수 있다. 더불어, 개발자라고 하더라도 애플리케이션이 동작하는 ..
-
[Trouble Shooting] Hikaripool-1 - Thread starvation or clock leap detected housekeeper delta 오류 해결기웹/Project 2024. 6. 23. 20:41
오류 환경AWS EC2 t2.microAWS RDS MySQL 8스프링 부트 3.2.1스프링 데이터 JPA오류 내용 스프링 부트 애플리케이션을 `t2.micro`에 서빙하고 있었다. 서버를 프로비저닝하고 약 24 시간 내에 CPU 사용율이 99%까지 올라가 크레딧 밸런스(t2.micro는 컴퓨팅 파워를 크레딧이라는 단위로 제공받아 작동한다. 이와 관련해서는 링크 참조)를 모두 소모하고 인스턴스가 다운된다. 인스턴스를 재부팅 해보면, 애플리케이션의 최종 로그에 다음과 같은 로그가 찍혀 있는 것을 확인할 수 있었다. Hikaripool-1 - Thread starvation or clock leap detected housekeeper delta(...) 오류 해결 과정우선, 위 오류가 의미하는 바를 살펴보..
-
[AWS] CloudFront를 Proxy로 활용해 보안 강화하기웹/AWS SAA 2024. 6. 23. 17:11
목표Public Subnet에 위치한 EC2 인스턴스를 CloudFront를 프록시 서버로 활용해 보안을 강화해보자과정기존 아키텍처는 다음과 같다. 기존 아키텍처에는 CloudFront를 거치지 않고 우회해서 Application Server를 접근할 수 있던 문제가 존재했다. CloudFront는 AWS의 CDN 서비스로 캐시 서버의 역할을 하기 때문에, CloudFront만을 통해 Application server에 접근하게 만든다면 다음과 같은 아키텍처를 구현해 일종의 프록시처럼 동작하게 할 수 있다. 위 아키텍처를 구축하기 위해 EC2의 보안그룹을 "CloudFront에서의 트래픽만을 인바운드 허용"하도록 수정하면 된다. 단, CloudFront는 글로벌 서비스이기 때문에 IP 하나만을 인..
-
[BOJ/1719] 택배 - 풀이 및 코드백준 알고리즘/Problems 2024. 5. 9. 14:54
문제 링크https://www.acmicpc.net/problem/1719접근 방법다익스트라 알고리즘은 "어떤 노드까지의 최단거리를 알 때, 그 노드와 연결된 노드들의 최단 거리를 갱신"하며 정답을 구하는 알고리즘이다.그러한 알고리즘의 특징을 이용해서 다음과 같은 접근을 하였다.다익스트라 알고리즘을 진행할 때, 알고리즘의 효율성을 위해 우선순위 큐를 사용한다. 우선순위 큐에는 최단 거리가 갱신된 노드가 담긴다.우선순위 큐에서 어떤 노드 A가 나온다고 가정해보자. (우선순위 큐의 top이 노드 A)노드 A로 향하는 최단 거리는 확정되었다. (큐의 내용과 실제 노드 A의 최단 거리를 비교해야함)A 노드가 다익스트라 알고리즘을 실행한 루트 노드가 아니라면 루트 노드에서 A 노드로 향하는 이전 노드가 있을 것이..
-
[Trouble Shooting] Puppeteer (on Lambda) 오류: Navigation failed because browser has disconnected!웹/Project 2024. 5. 6. 23:53
오류 환경AWS LambdaNode.js 18@sparticuz/chromium@112.0.2puppeteer-core@19.8.0 오류 내용 Error: Navigation failed because browser has disconnected! at new LifecycleWatcher (/opt/nodejs/node_modules/puppeteer-core/lib/cjs/puppeteer/common/LifecycleWatcher.js:95:223) at Frame.goto (/opt/nodejs/node_modules/puppeteer-core/lib/cjs/puppeteer/common/Frame.js:206:25) at CDPPage.goto (/opt/nodejs/node_modules/pu..
-
[Java] 자바엔 Pass-by-value 뿐!프로그래밍 언어/Java 2024. 5. 6. 14:56
알고리즘 문제를 풀며 아래와 같은 코드를 작성하게 되었다.아래 코드를 보며 어떤 값이 출력될지 예상해보라. 예제1 )public class ReferenceTest { public static void main(String[] args) { new ReferenceTest().script(); } public void script() { String s = new String("Hello world!"); System.out.println("Before foo: " + s); // Hello world!가 자명하다. foo(s); System.out.println("After foo: " + s); // 과연 s의 값은 어떤 ..
-
[운영체제/OS] 동기화 문제 - test_and_set(), TAS공부/운영체제 2024. 5. 2. 00:46
세마포어의 wait(), signal() 연산이 원자성을 보장해야 한다는 것을 지난 포스팅에 언급했다.(https://highlaw00-dev.tistory.com/63) 싱글 프로세서 환경에서는 단순히 인터럽트를 방지하면 됐지만 멀티 프로세서 환경에서는 모든 코어의 인터럽트를 방지하는 것이 매우 비효율적이기 때문에 test_and_set() 명령어 혹은 compare_and_swap() 명령어 혹은 스핀락을 통해 해결해야 한다. 싱글 프로세서 환경 싱글 프로세서 환경에서 단순히 인터럽트만 방지하였을 때 wait(), signal() 연산이 원자성을 보장받는다. (그림 참조) 멀티 프로세서 환경 만약, 멀티 프로세서 환경에서 wait(), signal()을 수행할 때 원자성을 보장하기 위해 해당 명령을..