전체 글
-
AWS 에서 전화 옴서버/삽질 2023. 9. 25. 19:14
23년 9월 25일 오후 세시쯤.. 몇주만에 등 운동이후 근육통을 느끼게 되어 신나게 틸라피아를 먹을 생각에 들떠있던 중 걸려온 전화. 02-6965-9000 평소에도 보이스피싱 전화, 문자가 하도 많이와서 02로 시작하는 번호만 보면 웰노운 알고리즘을 풀듯 보이스피싱이라는것을 염두해 두고 받는다. 수화기 너머로 들리는 첫마디, "안녕하세요 아마존 웹 서비스 입니다 이영재님 맞으시죠??" 와.. 요즘은 보이스피싱이 하도 치밀해져서 내가 AWS 사용한다는 것 까지 알고있구나. 어디까지 말하나 한번 보자 "지금 고객님 깃허브에 엑세스키가 올라가있는 상태여서 고객님께 메일을 보내드렸는데 아직 처리가 안돼서 전화드렸습니다." 이때부터 뭔가 잘못됐음을 감지했다. 분명 ec2 인스턴스에 보안관련 민감한 정보들을 환..
-
[HTTP] TypeError: Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body.서버/삽질 2023. 9. 17. 21:37
StudyHub 개발 도중 제목과 같은 에러를 만났다. 사용자가 아래 화면에서 관심있는 스터디를 검색했을 때 스터디 제목을 기준으로 검색 내용과 일치하는 제목이 있을 경우 해당 스터디엔티티를 반환하는 로직을 구현하고있었다. @GetMapping("") public ResponseEntity findPostByString(FindPostRequestByString request) { return ResponseEntity.ok(studyPostService.findPostResponseByString(request)); } Controller 에서 json 형식으로 받아온 Dto 를 넘겨줘 결과적으로 해당 스터디를 변환한 dto를 받아올 생각이었다. 하지만 스웨거에서 요청을 보낸 결과 아래 에러메시지를 뱉..
-
[AWS ELB 배포 문제]트러블슈팅 2023. 9. 10. 00:54
이틀동안 머리아프게했던 배포 문제.. 삽질의 삽질의 삽질의 삽질을 거듭한 뒤 해결했다 어떤 삽질을 했는지 순서대로 기록해보자 첫번째 에러 사건의 발단은 북마크 엔티티 CRD 구현 및 Jwt 코드 리팩토링을 마치고 로컬에서 테스트를 마친 후 dev에 있는 커밋들을 main에 머지하는 과정에서 일어났다. 로컬에서 잘 돌아가는 코드가 health Red 라는 상태가 나와 AWS의 ELB 페이지로 들어가 이벤트를 확인했다. 5xx 에러가 나오는걸 보아 서버 실행중 에러가 생긴것이다. 현재 StudyHub 에서는 블루/그린 배포 방식을 사용한다. 아래 그림처럼 health 상태가 Red가 되면 해당 인스턴스는 지워지고 원래 실행중인 인스턴스만 남게되기 때문에 어떤 에러로 인해 서버가 실행이 안되는지 알 수 없다...
-
[Study-Hub] Jwt 인가 + 보안관련 문제트러블슈팅 2023. 9. 8. 20:01
프로젝트를 진행하며 팀원과 함께 코드리뷰를 하던 중 부족한 부분이 많이 보여 정리해보고자 한다. 문제점 1. User 엔티티의 Id 값을 그대로 파라미터로 받아온 것 2. Jwt 인가 과정에서 로직을 잘못 작성해서 nullPointerException 에러가 발생한 것 User 엔티티의 Id 값을 파라미터로 받아오면 무슨 문제가 생길까? Study Hub 서비스에서 User 관련정보에는 이메일, 학년, 전공 등 개인정보가 다수 포함돼 있으므로 절대 노출돼서는 안된다. 만약 악성 사용자에 의해 User 엔티티의 Id 값을 담은 HttpRequest 가 탈취될 경우 악성 사용자는 Id 값을 이용해 게시글 삭제, 회원탈퇴 등을 자유롭게 할 수 있게 되는것이다. 이를 방지하기 위해 Jwt accessToken ..
-
[OS] 프로세스, 스레드, 멀티태스킹, 멀티스레딩, 멀티프로세싱, 멀티프로그래밍CS/운영체제 2023. 8. 31. 20:00
Q) 프로세스와 스레드의 차이에 대해 설명해주세요. A) 프로세스는 OS 로부터 CPU 와 메모리를 할당받아 실행중인 프로그램이고, 스레드는 이 프로세스안에서 실행되는 작업의 단위입니다. 프로세스는 운영체제로부터 자원을 할당받지만 스레드는 프로세스로 부터 자원을 할당받으며 프로세스 내의 코드, 데이터, 힙 영역을 공유하기 때문에 좀 더 효율적인 자원 사용이 가능해집니다. 또한 같은 프로세스 내의 스레드에서의 컨텍스트 스위칭이 프로세스의 컨텍스트 스위칭에 비해 더 빠르다는 장점이 있습니다. 신입 개발자 면접 단골질문으로 나온다는 이 질문을 그동안 대충 외우고만 있었지 제대로 이해하지 않고 있었기에 이번 포스팅을 통해 더 자세히 알아보겠다. 일단 스레드라는 개념은 왜 나왔을까?? 모든 학문의 시발점은 인간의..
-
[DB] 데이터베이스 트랜잭션이란?CS/데이터베이스 2023. 8. 28. 00:01
그동안 대충 알고있던 트랜잭션 개념에 대해 자세히 알아보겠습니다. 공부하기 이전 막연하게 트랜잭션은 여러가지 일들을 하나의 일처럼 생각해서 데이터베이스에 한번에 커밋하는것 이라고 생각했습니다. 뭔가 틀린말은 아니지만 그렇다고 맞는말도 아닌것 같네요. 좀 더 예쁜말로 트랜잭션을 정의하려면 트랜잭션의 성질에 대해 알아봐야하기 때문에 트랜잭션의 대표적인 성질 ACID 에 대해 먼저 알아보겠습니다. ACID 란 트랜잭션의 안정성을 보장하기 위한 네가지 성질 atomicity, consistency, isolation, durability 을 의미합니. 1. atomicity (원자성) 한 트랜잭션의 연산들이 모두 성공하거나, 모두 실패되는 성질. 2. consistency (일관성) 한 트랜잭션의 이전과 이후 ..