[aws] 드디어 때가 되었다, 반쯤 죽어 눈을 반만 뜬 나의 인스턴스를 살릴 시간이..(ec2 인스턴스 상태검사 1/2통과, 인스턴스 연결성 검사 실패)
cloud/aws2024. 5. 20. 22:31[aws] 드디어 때가 되었다, 반쯤 죽어 눈을 반만 뜬 나의 인스턴스를 살릴 시간이..(ec2 인스턴스 상태검사 1/2통과, 인스턴스 연결성 검사 실패)

0. 상황    - Docker compose로 java 어플리케이션을 3개 올려놓은 내 ec2 인스턴스는, docker compose를 up 한 뒤 24시간 이내로 CPU가 튀면서 인스턴스 상태검사에 실패하고, 배포 사이트 접속은 물론 ssh 접속마저 불가능해지는 이슈가 있었다.    - 모니터링을 확인해보니, compose up을 실행한 후 하루가 되지 않아 실제로 cpu 사용율과 cpu크레딧 사용량이 튀면서 더이상 네트워크 패킷이 정상적으로 오가지 않는 것을 확인할 수 있었다.1. 에러코드 전문    - 일단...로그를 뺄 수 있을까? 시도해 보자2. 원인    - Amazon ec2는 아래 세 가지 상태 확인을 통해 각 ec2 인스턴스 상태를 모니터링한다.        1. 시스템 상태 확인   ..

[Java] GC log 확인하기(내 가녀린 EC2인스턴스는 정말 GC때문에 죽는게 맞을까? + 갑자기 튀어나온 SerialGC..?)
Web_Backend/Java2024. 5. 20. 22:25[Java] GC log 확인하기(내 가녀린 EC2인스턴스는 정말 GC때문에 죽는게 맞을까? + 갑자기 튀어나온 SerialGC..?)

0. 상황    - 이전 글 에서 말했듯이 aws의 t4g.micro(기존 : t3.micro)라는 작고 가녀린 ec2인스턴스에 docker compose로 spring 어플리케이션을 3개 + nginx까지 구동시키다가, oom kill java 이슈가 발생했다..(해당 상황을 참여중인 커뮤니티에 공유하니, 모두들 이구동성으로 t3.micro, t4g.micro에 사과하라고 하셨다😅😅)1. 에러코드 전문    - ec2 인스턴스의 System log에서 발견한 oom 관련 로그는 아래와 같았다.[69465.875991] systemd invoked oom-killer: gfp_mask=0x140cca(GFP_HIGHUSER_MOVABLE|__GFP_COMP), order=0, oom_score_adj..

[AWS summit seoul 2024] 참가 일기 >-<
diary2024. 5. 18. 21:11[AWS summit seoul 2024] 참가 일기 >-<

드디어 야나 난생 처음으로 AWS 써밋 댕겨왔습니다여이이이-!!!  개발로 넘어오기 전 근무했던 사무실이, 코엑스 바로 옆이었어서 감회가 더 색달랐다..!  첫 세션은 컨테이너..! EMR on EKS..!사실 아직 컨테이너 기술과 데이터 처리 분야에 대해서는 배경지식이 거의 없었기에 온전히 이해할 수는 없었지만(물론 설명을 정말 쉽게 해주신 덕분에 대략적인 감은 잡을 수 있었다!), 데이터 사용을 원하는 개발자들이 다른것이 아닌 "개발"에만 집중 할 수 있도록 플랫폼을 생성하고 개선해왔다는 부분이 인상적이었다.Apach Yunikorn, Airflow 관련해서도 이야기를 많이 해주셨는데, Yunikorn에서는 고급 스케줄링으로 자원경합을 방지하고 과도한 프로비저닝을 막았다는 부분의 원리가 궁금했고, A..

Project2024. 5. 16. 02:43[멘토링] 전자정부 프레임워크의 메뉴얼에서 “개발/테스팅 시점에만 System.out.println()을 사용하고 운영으로 이관하기 전에 삭제하는 것은 좋은 방법이 아님.“이라고 하는 이유와, 현업에서 로그를 남기는 범위(가능한 많이, 되도록 폭팔하지 않게)

해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1.  운영환경이 아닌 개발환경에서 임시로 디버깅을 하기 위해서는 System.out을 사용해도 괜찮을까요?Java 강의 수강 도중 console에 출력하는 System.out(이하 sout)에 대해서 다루었습니다. sout 관련해서 기존부터 받아왔던 “Sout은 성능면에서나 로그를 남기는 이유와 관련해서나, Sout 사용을 지양하고 logger또는 logger 프레임워크를 사용하는것이 좋습니다” 라는 피드백이 생각나, “왜 개발 및 운영환경에서 Sout의 사용을 지양해야하는지” 이번 기회에 공부해보았습니다…관련해서 생긴 궁금증으로는 “운영환경이 아닌 개발환경에서 임시로 디버깅을 하기 위해서는 Syste..

Web_Backend/DB2024. 5. 16. 02:33[멘토링] NoSQL에서 "no"의 해석, 가상환경과 DB

해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1.  NoSQL에서 no의 해석에서는 의견이 갈린다고 들었습니다. 멘토님께서는 NoSQL에서 no를 어떻게 해석하시나요?- no- not only- non-relational operational- non-relational database 👨‍🎓 A1.  no는 not only의 NO라고 봅니다.SQL이 DB에서 우선순위가 높은 선택지였을때 나온것이 noSQL이라 불리우는 범주의 DB였기 때문입니다.즉, RDB만으로는 해결하기 어려운 문제가 점차 가속되던 상태에서 나온것이 noSQL입니다.(데이터가 늘어나는데 RDB에서는 그를 따라갈만한  RDB 퍼포먼스가 잘 나오지 않았고, DB가 못견뎌서 램을..

Web_Backend/Spring2024. 5. 15. 23:34[멘토링] DTO의 분리시기, innerClass와 record, 비동기 통신 응답 방법관련 고민(kafka, websoket, gRPC..?)

해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1.  멘토님께서는 service DTO controller DTO의 분리시기가 언제라고 보시나요? spring boot 어플리케이션에서 dto를 사용 할 때 어플리케이션 개발 초기에는 컨트롤러와 서비스 레이어 각각 나눠서 두기에는 두 dto간 요소 차이가 없을것이고 결국에는 코드의 중복으로 이어지기에, 대부분의 개발 초반에는 하나의 dto로 개발을 진행한 뒤, 프로젝트 규모가 커지면 추후에 분리하는편이라고 들었습니다. 저 또한 토이프로젝트 팀원들과 dto의 레이어별 분리 관련해서 논의를 진행중에 있습니다. 멘토님께서는 두 레이어에서 dto를 분리해야하는 시기는 언제쯤이라고 보실까요…! 👨‍🎓 A1...

Web_Backend/Spring2024. 5. 15. 23:20[멘토링] 프로젝트에서 버전 선택의 기준, 버전 이슈 의심되는 상황에서 대처법

해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1.  지난 11월 23일에 Spring Boot 3.2가 정식 릴리즈 되면서 생긴 궁금증입니다…!멘토님께서 보시기에, 현 상황에서 첫 스프링 프로젝트를 진행할 신입 개발자가 새로운 팀 프로젝트를 진행한다면가장 최근 릴리즈 버전인 3.2버전을 사용하는것을 추천하시는지, 아니면 조금 더 안정화되고 레퍼런스가 많은 3.0 혹은 3.1 버전을 추천하시는지 궁금합니다…! 👨‍🎓 A1.  제가 개발을 한다고 하면, 저는 새로운 이슈를 마주하는것을 즐기기 때문에 3.2버전을 쓸 것 같습니다. 하지만 신입과 주니어 개발자라는 대상이라고 하면 레퍼런스가 많은 3.0버전을 사용하라고 할 것 같습니다. 어느정도 경력이..

Project/(공통)troubleshooting2024. 5. 15. 22:22[멘토링] "이미지 파일"과 "JSON 데이터"를 클라이언트로 부터 전달받아 POST 해야하는 요구사항에 대한 처리 방법(하나의 api 두가지 형식의 data처리 혹은 api 분리)

해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1.  현업에서는 "이미지 파일"과 "JSON 데이터"를 클라이언트로 부터 전달받아 POST 해야하는 요구사항이 있는 경우, 어떤식으로 구현하시나요? 한번의 request로 두 형식의 data를 받아서 처리하시는지, 아니면 분리하는것이 더 나을지 고민이 됩니다.Spring boot application에서 파일과 여러 정보가 담긴 json 데이터를 하나의 api로 전달받아서 파일의 S3업로드 후 업도르 파일의 url을 여타 정보들과 함께 담아 하나의 entity에 저장하려했습니다. frontend에서 content-type을 multipart/formdata로 명시하고 파일을 담아서 보내줬으며, spri..

Project2024. 5. 15. 22:01[멘토링] 스크럼 마스터 역할의 범위와 commit message, merge 전략

해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1.  현재 참여중인 토이프로젝트에서 애자일 스크럼 방식으로 지라를 활용중에 있으며, 스크럼 마스터의 경우엔 팀원들이 스프린트마다 돌아가면서 맡기러 했는데, 스크럼 마스터의 역할이 어디부터 어디까지일지 궁금해 문의 드립니다…!그리고 스크럼 마스터를 팀원들이 돌아가면서 맡는것이 관련 맞는 선택일지, 현업에서는 보통 어떤 사람이 스크럼 마스터를 맡는지 궁금합니다! 👨‍🎓 A1.  사실, 스크럼마스터의 역할과 누가 맡을것인지 등등 모든것은 정하기 나름입니다. 제가 참여했던 프로젝트에서 보통 스크럼 마스터는 모든 그 날의 기록을 책임지며, PR 리뷰의 독촉을 맡아서 하는 편 같습니다. 누군가 bloking ..

[algorithm] 정렬(버블정렬, 선택정렬, 삽입정렬, 퀵정렬, 병합정렬, 힙정렬, 기수정렬, 계수정렬)
CS/CS2024. 5. 15. 21:48[algorithm] 정렬(버블정렬, 선택정렬, 삽입정렬, 퀵정렬, 병합정렬, 힙정렬, 기수정렬, 계수정렬)

정렬버블 정렬(Bubble Sort) - 시 O(n^2) | 공 O(n)서로 인접한 두 원소의 대소를 비교, 조건이 맞지 않다면 자리를 교환해 정렬선택정렬(Selection Sort)과 유사배열의 길이가 길어질수록 비효율적시간 복잡도 계산(n-1) + (n-2) + (n-3) + … + 2 + 1 => n(n-1)/2최선, 평균, 최악의 경우 모두 시간복잡도가 O(n^2) 으로 동일공간 복잡도 : O(n)void bubbleSort(int[] arr) { int temp = 0; for(int i = 0; i arr[j]) { // 3. // swap(arr[j-1], arr[j]) temp = arr[j-1]; arr[j-1] = arr..

Project/(공통)troubleshooting2024. 5. 15. 21:38[멘토링] ec2인스턴스의 메모리 부족 관련해서, spring 어플리케이션의 가용 메모리에 제한을 걸어주거나 connection 생성에 제한을 두는 방법이 있을까요?

해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1.  ec2인스턴스의 메모리 부족 관련해서, spring 어플리케이션의 가용 메모리에 제한을 걸어주거나 connection 생성에 제한을 두는 방법이 있을까요?제 개인 포트폴리오를 위한 aws 인스턴스에서 스케일 관련 이슈가 있어 질문드립니다. 현재 aws 프리티어 ec2서버인 t2.micro에 docker-compose를 이용해 spring application 3개와 nginx를 띄워 리버스 프록싱을 적용함으로써 운영중입니다.어플리케이션을 띄울때에는 조금 느리다는 부분 말고는 정상적으로 구동이 되는데, 이틀간격으로 어플리케이션이 다운되는 현상을 마주했습니다.해당 부분 관련해서 파악을 해보니, 스프링..

Web_Backend/DB2024. 5. 15. 20:24[멘토링] 특정 entity에 1:1 관계로 여러 개의 entity가 묶여있는 상황에서 특정 entity를 포함한 연계 entity들을 통합 조회하는 경우, 연계 entity의 값이 없는 경우에 대한 처리방법

해당 게시글은 (케인)멘토님께 멘토링 세션을 통해 주고받은 질의응답의 내용을 정리한 글 입니다.😲 Q1.  특정 entity에 1:1 관계로 여러 개의 entity가 묶여있는 상황에서 특정 entity를 포함한 연계 entity들을 통합 조회하는 경우, 연계 entity의 값이 없는 경우에 대한 처리방법을 고민하고 있습니다.특정 entity에 여러개의 entity가 1:1관계로 묶여있습니다. 특정 entity에 1:1 관계로 여러 개의 entity가 묶여있기 때문에 entitygrapth를 이용해 일시에 값을 받아오고자 합니다. 하지만 연계되는 entity가 실제로 존재할지 아닐지는 알 수 없으며, 연계되는 entity값이 아직 생성되지 않았을 수 있습니다. 이러한 상황에서 현재 떠올린 방법은 두가지가..

image