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

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

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 ..

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

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

[arm, amd] M1 맥북에서 intel 버전 사용기(rosetta 전용 터미널 만들어 편하게 사용하기!)
Project/(공통)troubleshooting2024. 5. 8. 00:49[arm, amd] M1 맥북에서 intel 버전 사용기(rosetta 전용 터미널 만들어 편하게 사용하기!)

[작성중]0. 상황    - 새로 참여하게 된 프로젝트가 arm을 지원하지 않는 python 버전(3.7.9)을 사용하고 있었다.    - 하지만 나의 노트북은 M1(arm)... 어쩌지!      ( 관련된 나의 python 관련 삽질 일기는 여기! 에서 볼 수 있다 ...;-    - 팀 리드분이 "rosetta" 를 이용해 intel 기반으로 환경 설정을 맞출것을 요청하셔서,       iterm을 복제해 rosetta 전용 터미널로 적용하고 brew나 pyenv처럼 자주 사용할 명령어에 대해서는 alias를     적용해 사용하기러 결정했다. + 각 아키텍쳐별 터미널을 켤때 해당 아키텍쳐별 PATH로 알아서 변경해준다면..?1. rosetta가 적용된 iterm2를 만든다!1. finder 에서..

[zsh, iterm2] alias 설정하다가 .zshrc 날려먹은 썰 푼다..(카오스엔지니어링?)
Project/(공통)troubleshooting2024. 5. 6. 17:13[zsh, iterm2] alias 설정하다가 .zshrc 날려먹은 썰 푼다..(카오스엔지니어링?)

0. 상황    - rosetta 전용 iterm shell 을 생성하고, 관련 alias를 생성하던 중.. 잘못된 명령어를 입력해 .zsh 파일이.. 덮어씌워졌다.1. 울지 말고 말해봐  좌절하던 내게 코코가 보내온 한마디....... 그래...! 나는...! 내게 카오스 엔지니어링을 하는 중인거야!2. 원인    - 원인은.. alias를 생성하다가.. 정말..무심결에...입력한.. 단...한줄의... 스크립트에서 시작된다..!! 주의 !! 아래 스크립트는 절대 따라 입력하지 마시오..!!alias rpyenv="arch -x86_64 /usr/local/bin/pyenv" -> .zshrc  그렇다..  >>를.... 정신을 놓은채로 ->로 입력하고 말았다...원래 입력했어야할 스크립트는.. 아래..

[CD] Docker compose, Docker hub, webhook, node.js를 활용한 야매 CD 개발기
Project2024. 4. 17. 18:56[CD] Docker compose, Docker hub, webhook, node.js를 활용한 야매 CD 개발기

1. 학습 계기 기존에 개발해 둔 팀프로젝트들을 배포해서 포트폴리오로 사용하고자 하였다. 직접 AWS server에 올려보니 local환경이 아니기 때문에 발생하는 이슈들이 있었으며, 팀프로젝트 배포당시 발견되지 못했던 이슈들이 있어 수정작업을 하다 보니 매번 수정 후 server에 올려 확인하는 작업이 매우 불편하게 느껴졌다.(기존에는 git repo를 server에 직접 pull 받아 이미지를 build 하는 방법을 사용하다가 용량이 적은 프리티어 서버에서 직접 build를 하는 것에 부담을 느껴 -> build한 파일을 별도의 github repo에 업로드해서 서버에서 pull 받아 사용하던 방법을 사용하고 있었다. 프록시의 경우에는 처음에는 포트포워딩을 설정해 두었다가, nginx를 통해 리버스프..

[aws-elb] target is in an availability zone that is not enabled for the load balancer
Project/(공통)troubleshooting2024. 4. 6. 00:24[aws-elb] target is in an availability zone that is not enabled for the load balancer

0. 상황 - AWS ELB 중 ALB에 nstance-target-group을 변경하던 중, 새로 추가한 인스턴스의 상태가 "Unused"에서 변경되지 않으며, target is in an availability zone that is not enabled for the load balancer가 발생. 1. 에러코드 전문 - "Unused", target is in an availability zone that is not enabled for the load balancer 2. 원인 - 기존에 ELB의 서브넷 그룹관련 test를 하면서 서브넷 그룹을 일부 제외시켰는데, 새로 생성한 인스턴스가 제거된 서브넷 그룹중 하나에 생성이 되면서 발생된 문제이다 3. 해결방안 - load balancer의 작..

Project2024. 4. 2. 21:44작고 귀여운 나의 운영서버를 위한 Spring + react 프로젝트 정적 리소스 배포기(feat.. spring servlet custom filter + 왜 mvc 패턴은 지양되고 있는가.)

BE : Spring + FE : React 프로젝트를 작은 규모의 cloud server(aws : t2.micro, ncloud : Standard)에 배포하며 마주한 이슈 1. 마주했던 고민 외주 프로젝트에서 Backend는 Spring 프레임 워크로 Frontend는 React라이브러리를 활용해 mvp 모델을 개발하던 중, 우선 가장 작은 규모의 cloud server(aws기준 t2.micro - RAM 1GiB)에 배포하면서 어떤 구조로 서버를 배포해야 할지 고민하게 되었다. FE, BE 서버를 각각 run 시킬 것인지, 아니면 하나의 서버에서 각각 다른 포트에 FE, BE server를 구동할 것인지.. 혹은 mvc패턴으로 react 앱을 빌드한 뒤 spring 서버에서 정적 리소스로 제공할..

Project2024. 3. 22. 17:51[cultureLand] 9만건의 Data seeding 대작전(Feat.. 이슈 투성이 Promise + Prisma)

1. promise에 대한 정리가 필요 2. 관련해서 java 의 스레드에 대해서도 정리를 하고싶음(욕심) 관련 글을 작성한뒤에 이 글에 링크로 작성하는 식으로 합씨다 1. 수행했던 단계별로 정리를 하고싶음. 1) import { PrismaClient } from '@prisma/client'; import dayUtil from '../../utils/day'; const detailEvents = require('../data/detailData/detailEvents.json'); const prismaClient = new PrismaClient(); export async function seedEvents() { const startTime = Date.now(); // Promise 배열 ..

image