2022-12-19 09:30:11

첫번째 프로젝트를 마치고 나서…

첫 직장에서 첫 플젝을 끝나고 나서 따로 회고를 적지를 않았다. 간단히 생각 나는 것들을 적어봤다.

플젝을 하면서 느낀점

  • 불정확한 지식으로 인해 숨겨진 오류
  • 겹겹이 쌓인 오류산
  • 환경변수를 넣지 않아 생기 오류는 찾기가 힘들다
  • set-cookie 할때 동일 도메인 레벨에서만 저장이 가능하다.
  • email template은 직접 다 해줘야한다.
  • raw query로 코딩을 했을때 확실히 더 알게되었다.
  • Sequelize와 같은 결과값을 가져오지만 실제로는 raw query로 최소한의 transaction으로 자유롭게 DB를 다룰수 있다.
  • 에러 메세지를 주의 깊게 보자
  • ElasticBeanstalk는 정말 짜증난다.
  • ElasticBeanstalk 셋팅시 Docker build를 docker hub으로 사용해야 초기 빌드시 힙 메모리가 모자라 서버가 다운되지 않는다.
  • 백엔드는 node 버전에 따라 크게 성능의 차이는 없었다. -> 기존 레거시 코드 노드(10버전) / 모듈업데이트 후(18버전) 과 성능 테스트로는 정확히 알 수 없지만 수치는 비슷했다.
  • lambda는 생각보다 편리했다.
  • cognito는 그닥이었다… 마이그레이션 서비스도 없고 따로 만들어야 하며, idtoken에 대한 개념도 또 알아야 했다.
  • Task 관리가 힘들었다.
  • 요구조건을 이해하고 그대로 코딩으로 할때 정확하지 않았다.(이해도 부족)
  • Raw query에 대한 이해도 부족
  • 다른 사람이 작성한 코드 바로 이해하기 힘들었다… 계속 보고 또 보고 해야지 겨우 이해했다… ( 지금도 이해하는지…?)
  • 내가 작업하고 내가 배포하는 중에 확신이 들지 않았다. 지속적인 에러로 인해 대포에 대한 두려움이 생긴거 같다.
  • kubernetes는 어렵다.

2022-10-10 17:20:22

정신없이 지나간 한달

많은 일들이 있었다. Cognito 인증 문제가 계속 발목을 잡았지만 결국에는 해결했다. 문제는 STS(Security Token Service) 계정의 권한 문제이다. 너무나 간단했지만 그전에 안되던게 갑자기 되는지는 확실히는 모르겠다. 내가 그때 뭘했는지가 기억이 안나니까….. 아무튼 지금 사용하는 패턴으로 봤을때는 이문제가 가장 핵심이지 않을까싶다.

  1. tmux에서 각 창의 session은 독립적이라 각 창마다 토큰값을 갱신해줘야한다.
  2. ElasticBeanstalk의 Cognito identity 권한 주기 STS 권한을 준다.

EB(ElasticBeanstalk) buffer size over 문제

EB에서 loadbalance 셋팅할때 header의 buffer size가 내가 사용하려는 사이즈보다 작아서 아래와 같은 문제가 발생했다. eb-cli를 사용해서 eb logs를 확인했더니 upstream sent too big header가 나왔다. 검색했더니 buffer size를 변경해야 한다고 한다.

  • 브라우져에서는 502 에러
  • nignx 에러는 *167 upstream sent too big header while reading response header from upstream
## 아래와 같은 폴더를 생성하고 proxy.conf를 만든다음
$ /project-folder/.platform/nginx/conf.d/elasticbeanstalk/proxy.conf


## 아래와 같이 입력해주고 eb-cli를 통해 deploy 해준다. 
$ vi proxy.conf
proxy_buffer_size                       16k;
proxy_buffers                           4 16k;

## 물론eb-cli를 설치하고 env까지 다 설정해야지 아래 명령어를 실행할 수 있다.
$ eb deploy

2022-09-08 20:19:33

해야될게 많다

내가 스스로 자초한 일이긴 하지만 한개씩 해결해야 한다.

  • Github -> AWS codecommit 으로 옮기기 (commit 내용까지)
  • 레거시 코드 Dockerlizing 해서 EB(ElasticBeanstalk)으로 옮기고 chatbot 으로 Push Noti 하기

2022-09-04 14:22:33

과연 AWS repo를 사용하면 보안상 안전할까?

2022-09-02 20:00:33

경험 많은분의 조언

이틀동안 많은 대화를 했던거 같다. 일단 처음 코드 셋업부터 해서 많은것을 같이 구성을 다시 하고 아키텍쳐 의견을 나누고 적용하고 비교 했다. 그러면서 AWS에 관한 내용을 많이 듣게 되었다. 역시나 AWS는 해외 기업으로 오직 능력만 보는 듯하다. 그리고 철저히 능력 위주 성과 위주 인거 같았다. 부트 캠프할때부터 조금 이상한게 Devops 부분에 대한 열정이 남다른거 같다. 안되면 되게끔 하는 성취감과 자동배포 자동노티등을 셋팅하다 보면 좀더 이쪽이 더 적성이 맞나 라는 생각 마져 든다. 뭐 재미있으니까

2022-09-01 14:00:22

쿠버네티스 드디어 해결하다.

docker buildx 사용해서 멀티플렛폼 빌드를 하니 잘된다.

2022-08-29 19:30:00

마이그레이션 Kubernetes, Cognito

새로운 프로젝트가 다가온다. 아마도 시간이 많이 없을 수도 있고 바쁠수도 있다. 지난번 dotenv 파일 노출로 인해 아침에 잠깐 미팅을 하고 대부분의 access key와 비밀번호를 변경하고 각 IAM role에 대한 역할을 나눠서 permission을 지정했다. 털려도 그 계정만바꿀 수 있도록 조취를 취한것이다. 다른 곳은 어떻게 환경변수를 관리하고 있는지 궁금하다.

마이그레이션의 결과는 괜찮았다. API는 제대로 작성하고 EB(ElasticBeanstalk)도 잘 운영되고 있다. 다만 기존 레거시 코드들이 모두 orm 구문을 사용해서 사용한게 아니라 raw query를 이용하여 각 들어가는 내용을 수정하는 방식으로 되어 있다. query는 조금 알고 있지만 그렇게 고도화된 raw query는 바로바로 이해하기가 힘들다.

인증관련하여 AWS cognito를 사용할거 같다. 뭔지는 좀더 살펴봐야 할거 같고 공부도 더 해야할거 같은데 시간은 많이 없고힘들기도 하다. MSA 경험을 이번기회에 직접 구현을 하는것이 굉장히 좋을 듯하니 좀더 힘을내서 공부를 해야 겠다고 생각한다.

묵향을 다시 정독중…

2022-08-26 18:46:01

사건 사고 보고

어제 계속 이어서 nestjs deploy시 아래와 같은 에러가 발생하면서 deploy가 안되고 있다… 왜 안되는지 미치도록 궁금해서 기본 API만 실행시키니 잘되었고 기존 내가 작성한 API들도 잘되었다. 이때 마이그레이션된 API를 하나라로 (service)라도 옮겨서 실행했더니 에러가 났다.. 이게 엄청난 시간낭비인게 한번 deploy하는데 15분씩 걸리는 듯 하다. 이유는 deploy 하는데 5분정도 걸리고… 에러나서 roll back 되는데 엄청나게 시간이 오래걸린다. 미쳐버러릴거 같아서 그냥 빠르게 다른 env 만들어서 테스트를 계속 했다.

디버그방법 계속해서 테스트를 했다. 디버그도 했다. 실행시킬때 메모리 누유가 있는지도 체크했지만 별 소득은 없었다. 아무리 봐도 빌드단에서 메모리가 부족해서 생기는 문제같은데 이게 지난번 프로젝트가 더 큰거 같은데 이런 문제가 발생하는지 궁금하다.

[ERROR] An error occurred during execution of command [app-deploy] - [Docker Specific Build Application]. Stop running the command. Error: failed to build docker image: Command /bin/sh -c docker build -t aws_beanstalk/staging-app /var/app/staging/ failed with error exit status 2. Stderr:fatal error: runtime: out of memory

이런 상황에서 실수를 해서 access key가 노출되었다. 내 프로젝트라면 상관없을텐데 실제 서비스 하는 것을 노출시켰으니 까마득했지만… 일단 잘 넘겼다. 노출시에 내가 알고 있던 방법은 소용이 없었고 캐시가 남아있고 어디선가 확인이 가능해서 크롤링 해서 AWS로 메일이 왔고 어느세 누군가 접속을 시도했다.

  1. git reset HEAD^
  2. 이후 git commit 그리고 push

이건 push 삭제인데… 링크를 타니까 보인다… 어? 나만 삭제하면 되는줄 알았는데 링크 타니까 다 보인다…. 이건 제대로 된 해결 방법이 아니였던거다. 따라서 바로 private 으로 바꾸는게 제일 안전했던것이다… 하지만 크롤링으로 이미 다 털린 후인거 같았다.

gitlab으로 셋팅을하고 해야할거 같은데.. 그것도 셋팅을 한번도 안해서 어떻게 해야할지 공부를 해야 할거 같다.
그나저나 EB 문제는 어떻게 해결해야 할까….

2022-08-25 20:00:03

퇴근길..

나에게 계속 시험에 들게 하는 Nest.js와 ElasticBeanstalk … 한번 해봤다고 자만했지만 역시나 케바케로 문제가 수업시 생기는데 미쳐버릴거 같다.

  • EB에서 FATAL ERROR: Reached heap limit Allocation failed - JavaScript heap out of memory 에러를 뿜으며 도커가 올라 가지 않는다.
  • 원인은 알수 없으나 eb local run 으로 docker 에서 얼마나 메모리를 먹는지 확인 보았는데 말도 안되는 수치를 보였다. 간단한 기본 API가 몇기가???
  • 뭐가 문제인지 혼돈의 카오스다. 뭐가 문제인지 기본 Nestjs로 돌려봐서 확인해야될거 같다.

2022-08-18 15:40:00

항해동기와 만남 AWS 관계자와 만남

어제 저녁에는 부트캠프 동기 두명을 만나 저녁을 먹으면서 이야기를 나누었다. 난 해외에 있어서 지난번 모임에서는 빠졌었는데 어느새 한국에 와서 다같이 저녁을 먹게 되었다. 다 보지는 못했지만 결국에는 개인사정으로인해 취업을 잠시 미룬 한분을 빼고 다 취업을 마쳤다. 다들 쟁쟁한 실력자들이고 성격도 너무 좋아서 어제 만난 사이처럼 친근하게 이야기를 나눌 수 있었다. 당연히 취업 후기에 대한 이야기를 나누었는데 굉장히 다양한 경험을 한 팀원 한분의 스토리가 굉장히 흥미로웠다. 그런데 이런 흥미로운 이야기의 결말은 결국 타이밍인거 같다. 실력이 좋다고 해서 바로 빱히는것도 아니었고 실력이 없다고 해서 취직을 못한것도 아니였으며, 이 회사는 붙었다 라고 생각했지만 떨어진 경우도 있었다. 또 생각지도 못한 인터뷰가 즐거웠다던가 기대했던 회사였는데 실망한 회사도 있었다. 결국에는 많은 회사의 면접으로 보고 많은 경험을 해봐야 나한테 맞는 회사가 있다는 것을 알 수가 있었던 경험이었다.

방금 미팅을 마치고 이런저런 이야기를 나누었다. AWS를 최근에 이직하신 것 같았고 마이크로서비스를 적용시킬만한 적당한 프로젝트를 찾고 계셨는데 다니고 있는 회사의 케이스가 적당해보여서 관심을 보인거 같다. 아무튼 혼자서 쿠버네티스를 구축하는데 어려움이 있어서 굉장히 힘들었는데 조금이라도 조언을 받을 수 있다면 좋을 거 같다는 생각에 힘이 났던거 같다.

2022-08-13 23:00:11

Kubernetes Meet up session 참가

카페에서 쿠버네티스와 AWS를 공부하면서 계속 삽질모드로 굉장히 힘들게 공부하고 있었는데 잠깐 딴짓을 하다 MEETUP 이라는 앱에서 Kubernetes 강의를 한다는 것을 보고 바로 달려갔다. 너무 늦게 봐서 도착하면 20분정도 늦을거 같았지만 일단 하나라도 더 건지기 위해서 그냥 무작정 Join 버튼을 누르고 찾아 갔다. 아무튼 좌석은 없었지만 Lecturer 옆에 앉아서 정면을 보고 강의를 들을 수 있었다.

레포 강의도 깔끔하게 잘하고 예제까지 그냥 아무것도 모른상태에서 튜토리얼 따라하면서 하는것보다 이해가 더 많이 되었다. 설명을 들을때는 100% 이해를 못했지만 예제 를 보면서 따라하니 뭔가 퍼즐이 맞춰지는 느낌이고 내가 어떤것을 잘못하고 잘했는지 몇개가 눈에 띄었다. 그리고 Helm과 Argo라는 프로그램을 알게되어 좀더 배포와 CD를 편하게 할 수 있다는것을 알게 되었고 AWS 쿠버네티스 쓸때 EC2로 하라는 조언을 받았다. 앞으로 Production 진행할때 모르는게 있으면 물어봐야겠다.

굉장히 유익한 시간이었다.

2022-08-12 17:51:10

퇴근길 일주차

  • 나름대로 만족한 구직 활동 내가 주니어 개발자로 원하는 기준만큼 좋은 직장을 구했다. 이제 새롭게 시작하는 직장에서 열심히 공부하면서 더 발전해야 할 것이다…. 출퇴근 시간 2시간은 …. 자격증 공부나 해야 겠다…

  • 특이한 면접 후기 무엇보다도 기분좋은 면접이라는 것을 느껴서 좋았다. 일반적인 압박 면접이 아니고 토론식 면접이 새롭게 느껴졌다. 평범한 내용의 질문은 아니었다. 긴장한 나를 위해 아이스브레이킹을 통해 이력서에 특이한 점인 해외생활에 대한 질문을 많이 물어봐주셔서 긴장이 많이 풀렸다. 그 이후에는 바로 일에 관련된 질문 3개를 통해 기술면접과 인성면접을 동시에 진행했다. 첫번째 질문은 기억이 나질 않고, 두번째와 세번째가 재미있어보였다. 두번째는 인증에 관한 내용이었다. 부트캠프에서 인증에 관련된 내용을 2번 발표하고 Oauth2 까지 담당해서 개발을 완료했던 부분때문에 자신있었지만 그닥 끌리지 않았다. 세번쨰는 현재 서비스되고 있는 인증부분에서 어떻게 하면 법인사용자들의 대한인증을 해야될까에 대한 주제 였다. 딱히 답은 정해져 있지 않았고 이 문제에 대한 내용을 같이 토론해 보았다. 쉬운거 같이 보였지만 이것저것 기존 인증방식과의 분리를 해야할지 (필드가 더 추가되는 문제로) 기존 컬럼에 필드를 추가해야할지 고민을 해봤고 OAuth2를 적용할지 안할지 아이디 비밀번호로만 적용할지 이야기를 나누었다.

답은 없었지만 생각지도 못한 실제 서비스의 확장성을 고려하면서 생기는 문제점을 토론하다보니 금방 2시간이 지나버렸다 사실 시간은 중요하지 않았다.

이렇게 면접이 끝나고 놀랐던건 면접비까지 주셔서 깜짝놀랐다. 조그만한 스타트업인데… 암튼 그렇게 놀라고 재미있던 면접이 끝났고 다음날…

조금 기대하던 다른 면접에 코딩과제를 통과해서 면접을 보러 갔다. 일반적인 질문들이 많이 오고 대답은 그럭저럭 잘했던거 같은데… 쓸데없는 말을 너무 많이 했던거 같다. 필요없는 말을 너무 많이 해서 그런지 나도 일관성있게 대답을 못하고 면접관과의 냉냉한 분위기를 나도 느낄 수 있었다. 그 느낌은 틀리지 않았고 당일날 불합격 통보를 받았다.

2022-07-21 23:00:12

드디어?!

  • 드디어… 몇군데 연락이 와서 면접을 보고 과제 테스트도 진행해서 합격을 받았다. 아직은 계약서를 안썼기 떄문에 확정은 아니지만 느낌이 조금 달랐다. 다른데는 그냥 서류에서 광탈했는데 … ㅠㅠ 처음으로 과제 테스트를 했는데 Nest.js 버전으로 인해서 typeorm을 못쓴게 아쉽다…

  • 항해99 팀원 근황 우리 팀원들 궁금해서 카톡을 했는데 다들 잘 생존하시고 있는거 같다. 그리고 활발하게 구직활동을 하고 있는것으로 보이고 있어서 다행이다.

  • 항해99 기술모의면접 후기 질문이 다 기억이 안나는데 기억나는대로 적어보면…

    1. 채팅서버 스캐일 문제 -> 면접볼때마다 질문이다. 아직 모르니 알아둬야겠다
    2. 목표하는 회사에 대해 질문을 무엇을 할것인가? -> 뭐라해야할지 잘모르겠다. 갑작스러운 질문이라..
    3. 추가로 질문하신게 인상깊었는데 풀스택으로 어필을 안하는 이유를 물으셨다. -> 아래 적었던 이유이다. 대기업에서는 대부분 전문적인 포지션을 원한다 얼마만큼 효율적인 코드를 짜고, 단기간에 성과를 내는 부분이다. 자칫 잘못하다가는 이것도 못하고 저것도 못하는 낙동강 오리알이 될거 같다 라는 말로 대답했다.
    4. 왜 엑세스 토큰과 리프레쉬 토큰을 사용했는지에 대한 이유 -> 첫번째는 보안에 관련된 문제, 토큰 생명주기를 나누고 따로 관리하며, DB에 토큰을 저장하는것까지 생각해보면 탈취된다 했을때 피해를 최소한으로 막을 수 있을거다.

2022-07-20 10:00:32

나의 위치는 어디인가?

  • 풀스택에 대한 글을 읽고. 어느 블로거가 말하는 풀스택 개발자에 대한 개인적인 의견을 읽어 보았다. 요즘은 풀스택이라고 포지션을 찾는 회사는 거의 없다고 한다 그 이유는 프론트나 백엔드나 한쪽으로 전문적인 사람을 기업에서 더 선호한다라는 것이다. 그럼 나의 잡다하고 얇은 지식은 과연 쓸모가 없는것인가?

  • 어떤 개발자가 될것인가에 대한 생각 토스관련 인터뷰를 보았는데 어디선가 많이 듣던 조언을 똑같이 해준다.

    "결과물 도출도 중요하지만 그 과정을 어떻게 해결하느냐가 중요하다." 항해99에서도 같은 말을 들었다.

생각해보면 어떻게든 코드는 구현이 가능하다. 속도가 느리거나 빠르거나, 그러나 비지니스 로직으로 실제 서비스를 적용하면 과연 이게 효율성 있는 코드인지 아닌지는 바로 구별이 간다. 바로 속도와 클라우드 최종 인보이스가 나올때 이다.

  • 서류전형 KINX라는 회사를 처음 들어봤는데 꾀 큰 기업인거 같은데 항해99측과 협의가 되었는지 몰라도 서류전형까지는 어떻게든 패스를 했다. 이제 인성테스트(?) 약 40분간 진행하고 공통문제를 작성해야 한다. 그리고 코딩테스트를 하는데 결과는 크게 기대는 안한다…

2022-07-19 22:30:00

광탈 & 해외 IT기업에 지원 & 알고리즘 공부를 다시 시작

  • 서류 전형에서 광탈하고 있다. 예상했던거고 계속 도전해야겠다.
  • 해외에서는 조금 더 리쿠르터들의 활동이 활발한거 같다. 최근에 IT관련해서 일하고 있는 친구를 만나 여러가지를 물어봤는데 리크루터를 통한 취업이 활발한거 같다.
  • hackerrank 라는 사이트를 많이 사용하는거 같다. 한국에 있는 기업뿐만아니라 다른 나라도 개발자가 부족한거 같다. 내 Linkedin에 그닥 많은 이력이 있지는 않지만 일단 추가 하고 보는거 같다.
  • Nestjs에서 swagger를 셋팅하는데 ApiQuery에 gender를 입력하고 enum 리스트로 male, female 옵션을 넣으려고 했는데 왜 안되는지 잘 모르겠다.

2022-07-17 22:40:00

Nestjs, Typeorm 업데이트로 인한 문제발생

레퍼런스를 통해 확인한 내용은 customRepositry를 만들어서 기존에 entityRepository를 대체해서 주입해야 한다. 그리고 swagger 및 test코드에 대해 조금더 확실히 넘어가야 겠다.

2022-06-20 23:47:30

멘탈 잡기

구직 활동에 대한 초조함이 가득하다. 멘탈이 나갈꺼 같지만 그래도 다시한번 멱살잡고 나아간다.

2022-06-19 23:55:42

멘토

고등학교 선배님께 멘토 요청을 했다. 아직도 게임 업계에서 PM으로 일하시는 듯 하다. 항해 최근에 모의 면접을 봤을때는 중고 신입으로 좋은 거 같다라고 말을 들었지만, 현실은 그렇게 녹녹치 않은거 같다. 멘토님은 나이가 많다. 내 나이 만큼 CTO가 있을것이고, 나보다 어린 사람이 많다는 것이다. 또한 나보다 나이도 적고 잘하는 사람 뽑을 것이다 라는게 멘토님의 의견이다. 나도 동의하고 그렇게 생각했다. 하지만 어느 커뮤니티에 나보다 더 나이가 많은 사람도 새롭게 시작하는 사람이 많은거 같다. 남들 보다 더 노력하고 열심히 안하면 뒤쳐질 것이다. 마음을 더욱 굳건히 흔들리지 않고 해낼 수 있다는 마음으로 나아가야 할거 같다.

2022-06-14 23:33:43

블로그 정리

카테고리만 만들어 놓고 정리를 안해서 너무 지저분 하다. 링크만 있고 내용은 없는 것들은 채워넣고 양보단 질로 하나씩 준비해야겠다.

2022-06-13 23:22:43

불안감

나의 위치가 어느정도 인지 잘모르겠다. 얼마나 서류에서 광탈할지 면접에서 어떻게 광탈할지 링크드인으로 지원시 어떻게 될지 궁금하다.

2022-06-12 23:34:33

지원하다

관심 있었던 회사에 일단 모두 지원을 해봤다. 아직 내가 얼마만큼의 역량을 가지고 지원한 회사에서 얼마만큼 나의 기술을 인정해 줄지는 아직 모른다. 좀더 많은 곳에 두들겨 보고 또 준비도 해야겠다. 물론 코딩테스트와 기본 내용들도 꾸준히 준비 해야겠다.

2022-06-09 23:33:33

가상 인터뷰

모의 인터뷰를 했다. 아래와 같이 정리 해본다.

  1. 자기 소개는 진짜 자기 소개가 아니다. 내가 어떤 스택을 가지고 있고, 어떤 개발자인지 짧게 소개 한다.
  2. 일단 이력서에 쓴 내용들은 깊이를 막론하고 다 알고 있어야 한다. 기본적으로 이력서 베이스로 질문이 들어오기 때문이다.
  3. 따라서 약어를 모두 알고 있어야 한다. MVC, CI/CD, AWS, SSL Access Token, Refresh Token, 등
  4. 두괄식으로 말을 해야 한다. -> 짧게 이것은 이것이다. 말한 후 그것에 대한 설명을 간단 명료하게 한다.
  5. 자바 스크립트에 관한 기본 내용도 나올 것이다.
  6. 다시 준비해야 한다. 이렇게 준비했다가는 광탈일 거 같다.

2022-06-05 16:30:33

WIL

드디어 4주간의 실전 프로젝트가 끝났다. 아쉬움이 너무 많이 남지만, 웬지 모르게 최종 발표회때 굉장히 많은 협력업체들의 질문을 받은거 같다. 내용을 정리해본다.

  1. 아키텍쳐 문제 image
    • 내가 실수 + 몰랐던 부분
    • 몽고 DB를 채팅서버랑 도커로 묶었다. (X)
      • DB는 서버랑 묶어서 서버를 묶지 않는다. (sacle up이 불가능하다.)
      • Redundancy가 불가능하다. <- 장애 발생시 다른 인스턴스가 생겨서 에러를 방지
      • 가용성(Availability) 확장성(Scalability)
    • Elastic Beanstalk 에서 Load Balancing이 작동되는 원리를 잘모르겠다.
      • 아키텍쳐에서 내가 nginx 를 넣어 놨는데 단지 내가 ssh로 들어가서 nginx가 있어서 reverse proxy 가 되는걸로 알고 이렇게 적었는다.
      • 그런데 생각해보니 내가 따로 서버를 나누었던 것은 그냥 각각 다른 인스턴스의 도메인이다.
      • 즉 각각 nginx가 있더라도 reverse proxy로 작동되는게 아니라 그냥 각각의 nginx가 따로 작동되는것이다.
      • 그럼 EB에서 있는 LoadBalancing은 어떻게 작동되는 것일까? 좀더 생각해 봐야겠다.

2022-05-22 16:04:33

WIL

  1. 큰 문제가 생겼다. 프론트 부분이 진행이 힘들어 보인다. 내가 생각한 원인은 아래와 같다.
    • 소통을 매일 했지만 프론트와의 대화가 깊이가 있지 못했다.
    • 금방된다 라는 팀원의 말을 그대로 믿었다.
    • 그 결과 실제로는 내가 생각하는 완료의 선과 다른 사람이 생각하는 완료의 선이 다르다고 확실히 느꼈다. 예) 팀원1) 거의 다 됐어요 -> 내가 생각했던 다 됐어요의 뜻이 달랐다.
    • 분명 다 된것이다. 내가 보더라도 CSS만 입히면 될것 처럼 보였다. 하지만 결과는 그렇지 않았다.
  2. 위와 같은 이유로 내가 행했던 행동이다.
    • 현재 무엇이 안되고 되었나에 대한 내용을 팀원들과 TODO 리스트를 작성했다.(링크)
    • 앞으로 해야할일과 말아야할 일을 어떻게 해야하는지 알려줬다. 예) 마이페이지에서 디자인이 안나와서 그냥 기다리고 있다. -> 디자이너와 다시 이야기해서 언제끝나는지 확인후 TODO 리스틀 확인후 언제 끝날지에 대해서 확인 후 팀원과 공유
    • 언제 어떻게 무엇을 어떻게 끝낼지 2번에서 정했다면 오전, 점심, 저녁에 진행사항을 공유 하자고 했다.
    • 물론 백엔드 3명이 다 달려들어 도와줬다. 채팅, 로그인 부분, 마이페이지, 랭킹
  3. 결과
    • MVP는 완성
    • 백엔드에서 진행해야 할 일들을 끝내지 못했다. (성능 테스트, 통합테스트) 성능 개선 및 리펙토링
    • 그러나 기본적인 기능들은 대부분 작동했다.
    • 정작 내가 해야할 일들을 다른 팀원이 백업을 해서 도와줬다.

2022-05-15 14:04:14

WIL

  1. Typeorm 쿼리문 문제 이슈링크
    • 내장된 typeorm 문법을 사용하려고 했다.. 하지만 처참히 실패 하루를 날렸다. 실패이슈
  2. Elastic Beanstalk 공부로 인한 다양한 삽질결과물
    • Elastic Beanstalk는 AWS 핵심 기능의 하나이다.
    • CI/CD, HTTPS, Load Balancing, EC2, Codepipeline, nginx 등 모든 기능들을 한꺼번에 사용할 수 있다.
    • 다양한 방법으로 deploy를 할 수 있다.
    • 도커에 대해 잘알면 다음으로 넘어가기 쉽다.
    • nginx 도 들어 있어서 Reverse Proxy까지 알고 있어야한다.
    • docker 경로 설정이 복잡하지만 해결했다. 작성해야할 문서들이 많아졌다
    • Github -> Codepipeline -> Node Source -> Elastic Beanstalk -> 배포 완료
    • Github -> Docker 배포 -> Docker Image로 -> Elastic Beanstalk -> 배포완료
    • 채팅 서버까지 연결 하려면 필히 Reverse Proxy를 이용해서 한개의 아이피의 라우터로 각각 다른 서버의 서비스를 붙여야한다.
  3. Refresh token에 관련한 내용에 대해 좀 더 알게되었다.
    • Refresh 토큰에 관한 내용 이슈

나혼자 작업이 지체되고 있는거 같다. 좀더 분발해서 진도를 나가자

2022-05-09 16:45:17

WIL

  • 프로젝트 진행사항 이슈
  • Entity 에서 class-validation을 사용할때 @IsNotEmpty() 옵션을 줘야지 POST가 잘 받아짐
  • local.strategy.ts 작성할때 Id를 user말고 다른걸로 설정할때 아래와 같이 usernameField를 설정하지 않으면 에러가남
    @Injectable()
    export class LocalStrategy extends PassportStrategyStrategy() {
    constructor(private authService: AuthService) {
        super({ usernameField: 'email' })
        }
    }
    
  • 아직 해결중이지만 쿠키에 JWT토큰 넣고 서버에서 res.cookie('token', access_token) 해줘도 프론트팀에서 만든 프론트에서 랜덤으로 쿠키가 들어간다. 아직은 이유를 모르겠다…

2022-05-04 20:19:56

  • 10시간 동안 회의만 하는중…

2022-05-01 15:11:35

WIL

  • 실전 프로젝트 관련 내용 정리
  • Stack
    • Frontend
      1. react.js
      2. kakao map API
      3. PWA
      4. GPS
    • bakcend
      1. Nest.js
      2. Socket(예정)
    • DevOps
      1. Docker
      2. Github action
      3. pm2
      4. aws
      5. mysql
  • Main concept
    • 지도상 내가 생성한 마커를 기준으로 주변 사람과 소통 및 미션을 수행후 리워즈및 명예의 전당에 오를 수 있음
  • target
    • mobile user()
  • 1일차
    • 위치 기반 서비스에서 컨셉이 시작
    • 포켓몬고와 같이 게임 컨셉으로 진행을 했음

2022-04-30 20:22:42

  • 실전 프로젝트 2일차
  • 기존 2조와 같은 백엔드 팀원으로 조가 같이 됐다. 이미 익숙해서 다들 친해서 굉장히 수월하게 진행되는 느낌이다.
  • 2일만에 전반적인 기본 틀과 API ERD가 나왔다.
  • 주제는 위치기반의 커뮤니티 서비스.
  • 일요일에는 CI/CD를 좀 구성해보려고 한다.
    • Github action, docker, pm2, mysql, nginx 이렇게 구성할 듯 싶다.

2022-04-24 21:02:40

WIL

  • 아직 해야될게 많은데 마음만 앞서고 정작 해야 될것을 조금씩 미루고 있는거 같다
  • 아직도 우선순위로 해야 될 일을 정리하지 못하고 있는거 같으니 다시 정리해서 천천히 해야할 일을 먼저 끝내고 다음 작업을 진행하도록 스스로 다짐한다
  • 다음 주 중으로 리더 부리더를 뽑는다고 한다. 나도 정작 해야 할 일을 잘 못하고 있는 판에 다른 사람들을 잘 이끌수 있을까 싶다. 다른 팀원들은 묵묵히 자기일을 끝내 놓고 다음 단계를 진행하는데 나는 아직 제자리 걸음인거 같다
  • 레이지 로딩, 이거로딩, N+1문제 라는 주제로 WIL를 작성 해야한다. 한번도 들어본적이 없는 주제이다. 하지만 다른 분이 정리해 놓은 포스팅을 보고 나서 간단히 이해한 내용을 정리하려 한다

레이지 로딩 : 이미 DB를 다 불러와서 쓸데 없는 데이터까지 모두 한번에 가져온다. 트래픽 발생이 생길 수 있다.

이거 로딩 : 원하는 데이터를 그때그때 불러온다. 트래픽이 많이 발생하지 않지만 한번에 많은 트렌젝션이 발생한다. TYPEorm에서는 이러한 문제를 leftjoin같은 구문으로 해결한다고 한다

N+1 문제 : 이거 로딩에서 한개의 쿼리문이 발생할때 그 이상? 더 많은 개수의 쿼리가 발생된다( 옵션별로 쿼리문이 생기기 때문에)

  • 지금 간단히 이해한 내용은 이렇고 따로 항목을 만들어서 테스트 하면서 작성 하고 싶다.
  • TYPEorm을 아직 시작을 안했기 때문에…

2022-04-17 09:45:15

WIL

  • Node.js : ORM, noSQL vs SQL

  • ORM(Object Relational Mapping)
    • 객체 관계 맵핑
    • 예전에는 모든 테이블형의 데이터 구조를 가지고 Primary key와 Forigner key를 가지고 테이블간에 정의를 내렸다
    • 하지만 복잡한 쿼리문과 가독성이 떨어지는 구조는 RDBMS의 한계라고 생각된다
    • 따라서 이것에 대한 대안으로 객체의 개념을 데이터베이스와 연결시켜 하나의 데이터베이스 프레임워크가 되버린 듯하다
  • NoSQL 을 사용하면서 느낀점
    • 굉장히 자유롭다
    • 자바스크립트의 말도안되는 확장성의 성격을 가지고 있다
    • 한번에 간단한 구조의 데이터베이스의 활용으로는 괜찮을 듯 하다
    • 하지만 데이터가 굉장히 많아지고 처리해야할 트렌젝션이 많아진다면?
    • 한번에 많은 사용자가 요청을 많이 하게 된다고 하면?
    • 서버의 성능이나 대역폭에 따라 다른 성능을 보일것으로 생각된다.
    • Nosql 과 SQL 과 같은 사양의 서버로 같은 형식의 데이터 구조를 불러왔을때 얼마나 성능이 다른지 궁금하다
  • SQL 을 사용하면서 느낀점
    • 역시 관계형 데이터 베이스로 관계 형성이 굉장히 복잡하다
    • 간단한 게시판과 코멘트의 테이블을 만들고 게시판이 코멘트를 가지고 있는지 코멘트가 게시판을 가지고 있는지 결정해야 한다
    • 또한 1 대 다 상관관계와 1대 1 관계 다대다 관계등 복잡한 테이블속에 관계를 형성하는게 앞으로 서비스 품질에 영향을 끼칠 것으로 생각된다
    • 한번 관계를 형성하고 데이터베이스 구조가 완성이 되면 수정 및 추가 부분이 굉장히 힘들고 요구비용이 많이 든다
    • 요구되는 사양을 충분히 생각하고 그에대해 추가적으로 기능 구현이 될 수 있는 부분을 고려해서 디비를 설계하는게 좋을 듯 하지만 이 또한 비용 적인 측면에서 추가로 들 수 밖에 없다
  • Sequelize 사용하면서 느낀점
    • 옛날에 사용했던 느낌으로만 진행하려고 하니 막히는 부분이 굉장히 많았다
    • ORM 방식을 처음 써보는데 MongoDB와 굉장히 유사하지만 테이블간에 관계 형성에 대해 연결해서 생각하기 굉장히 어려웠다
    • 몽고디비는 model을 만들고 나면 한번 만든 model를 가지고 삽입 삭제 수정 등 모든 CURD 작업을 할 수 있다
    • 하지만 Sequlize도 비슷하지만 먼저 Sync 메소드를 통해서 연결부분을
  • 코드의 재활용 및 리펙토링
    • 지난주에도 느꼈지만, 나의 코드는 굉장히 더럽다.
    • 반면 다른 분들의 코드는 깔끔하고 가독성도 좋다
    • 지금은 구현에만 중점을 두고 있는데 조금더 리펙토링과 가독성 측면에서 더 생각하면서 진행해 봐야겠다
  • 앞으로 해야할 것
    • typescript
    • typeorm
    • nestJS
    • API test

2022-04-13 10:29:11

완성링크

지난 주말에 빠르게 노드관련 클론코딩을 마치고 그 베이스를 가지고 처음부터 만들어 보았다 중간중간 잊어버린 코드와 copilot 의 도움을 받아 하루?만에.. 만들긴 했지만 아래와 같은 문제점이 발생 하였다

  • 하다 보니 디자인이 거슬린다…
    • CSS 손대지 마라…
  • redirect 부분이 고려가 안되었다
    • 코멘트의 삭제 API를 불러왔을때 바로 전단계로 다시 불러오고싶지만 안된다.
    • 아직 고민을 더 해봐야한다…
  • 예외처리 부분에 대해서 조금 더 고민해봐야한다
    • 뭔가 잘못하고 있는거 같다…
  • 백에서 보내서 프론트에서 받은 내용이 깨지는 문제점
    • 아래 코드를 이용해 완료했다. 모든 내용을 보낼때마다 UTF로 어떻게 보낼 것인가?
    • res.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'});
  • 리펙토링을 하면서 코드의 가독성이 좋아지지만 파일 구조가 복잡해지는 문제점
    • 리펙토링을 과하게 하지 말자
    • 어떤 내용을 중심으로 리펙토링을 해야할지 미리 생각해야 한다
  • 변수들을 안으로 넣는가 아니면 구조화 하는가 고민해봐야하나?
  • 게시물의 ID를 몽고디비에서 제공하는 Id 변경해서 다시 해보자
    • 기존에는 내가 임의로 생성한 number를 카운팅하는 방식으로 넘버링을 했다
    • 그리고 게시물의 넘버링과 코멘트의 넘버링을 같이 카운터 해버리기때문에 게시물의 넘버링을 해줄 수 없다 -> 근데 꼭 해줘야하나?
  • 생각을 한대로 진행은 했지만 개인적인 프로젝트를 싫행하면서 계속 바뀌는 점이 발생하였다
    • 100% 생각대로 된다면 더할 나위 없겠지만, 생각지 못한 부분에서 막히거나 잘못 설계한 경우에는 롤백을 할 수 밖에 없다는 생각이 든다
    • 처음 설계시 충분한 생각을 가지고 내용을 정리한 후 예외 처리같은 부분을 잘 생각해서 설계를 해야 할거 같다

2022-04-10 06:49:20

WIL

Node.js 주차 시작인데 꽤 재미있다. 스파르타 강의를 보다가 뭔가 답답해서 지난번에 하다가 중단한 유튜버 강의를 보고 따라했다 중간중간 오타 같은것도 있어서 굉장히 헤맸지만 대부분 다 해결되었다.

클론코딩을 하고 나서는 정리를 하는게 굉장히 머리속에 잘 남는거 같다 아니, 모든 공부 뒤에 정리를 하는게 머리속에 더 남는다 아래는 리스트는 이 클론 코딩을 하면서 배운 내용이다

  • MVC(Model, View, Controller) understand
    • Model : data initialize, data structure
    • View : html, css, js
    • Controller : routing, data processing, data validation
  • How to use google auth
    • Register google dev console
    • Add google auth to project
    • Get the google auth token
    • Use the token to access the google api
    • Use passport library for google auth
  • How to use MaterializeSite link)
  • How to use Mongodb
  • How to use hbs(Express view engine for handlebar.js)
  • How to use express - app.use is used to use middleware - app.router is used to use router - GET, POST, PUT, DELETE, PATCH
  • How to use middleware in router
    • Middleware is a function that runs in the middle of the router
    • So, middleware is used to check the user is logged in or not

link

2022-04-09 05:50:21

토요일

  • 주특기 시작
    • 첫 과제는 게시판 만들기
    • get, post put, patch, delete 관한 내용을 알게되었다.
    • 여태 그냥 axios.get()만 써왔는데 왜 이것을 쓰는지에 대해 좀더 명확하게 알게 되었다

2022-04-03 22:58:40

WIL

일요일

  • 힙, 정렬(버블, 선택, 삽입, 퀵, 머지, 힙) 중 최소 3개
  • [[heap]]
  • [[merge_sort]]

정렬같은 경우 단골로 나오는 알고리즘 문제이다 꼭 한번씩은 다시 직접 구현해서 잊어버리지 말자

2022-04-02 18:44:34

집중력 기르기

  1. 휴식 취하기
  2. 계획 세우기
  3. 명상하기
  4. 집중이 잘되는 장소 선택하기
  5. 균형잡힌 식생활하기
  6. 자주 운동하기
  7. 휴식을 취하고 환경에 변화 주기
  8. 집중력 연습을 꾸준히 하자
  9. 내가 할 것을 명확히 하자
  10. 한눈을 팔거나 딴 생각을 할 시간을 따로 정해두자
  11. 집중할때 호흡을 자주하자
  12. 최소 한시간 최대 30분 간격으로 조금 쉬자
  13. 한번에 한 가지 일을 마치는 연습하자!!!

나만의 위키 천천히 한개씩 완성시켜보자

2022-03-29 21:39:23

월요일

오늘은Docker로ubuntu를 만들어 SSH와 nginx를 설치해서 github actions을 통해 자동배포까지 진행해봤다 기초적인 CI/CD에 대한 내용을 알게 되었다

아래와 두개를 링크를 걸어보았다

  • [[docker-basic]]{docker 관련 기본}
  • [[github-actions]]{github action을 통한 자동배포}

2022-03-27 17:49:08

일요일

푹 쉬었다. 쉬는것도 중요하다고 생각한다. 아직도 가야할 길이 길기때문에 페이스 조절을 잘해야겠다.

WIL

2 주차가 마무리 됐다.

조금 후회가 되는 2주차 였다. 더 집중해서 했으면 뒤쳐지지 않았을텐데… 다시 도토리반에 들어가서 링크드리스트, 스택, , 해쉬 테이블 을 복습 할 에정이다.

그래도 조금이라도 이해한 내용을 아래 적어본다

2022-03-26 15:33:03

토요일 팀원들과 vscode live share를 핳면서 스택에 대해서 같이 공부했다. 같이 코딩을 하면서 뭐가 문제인지 파악하면서 하니 재미있었다. 가티 코딩하는 도중문제가 발생했는데 적어봐야겠다.

  1. 처음 설계를 정하지 않아 방향성을 잃
  2. 각자 파일을 만들고 거기에 대한 클라스를 만들고 메소를 만들어 하나의 main 파일로 가져오려고 했을때 같은 데이터를 못쓰는 문제점이 있었다.
    • 결국에는 구조적인 문제로 인해 다시 만들어야 했던거 같다.
  • wikidoc
  • [[inheritance-python]]{파인썬 상속}

python 상속에 대해서 조금 더 알게되었다.

2022-03-25 06:46:47

금요일 오늘도 집중해서 해보자

다시 스택과 링크드리스트 큐에 대해서 공부를 시작하였다 복습하는 단계로 아무것도 없는 빈 페이지에서 직접 구현까지 할수 있는 단계까지가 목표이다

2022-03-24 07:26:28

목요일 김병관 멘토님의 면접 관련 미팅 블로그는 꾸준히 내생각의 흐름을 적는 방식으로 적어라 기본적인 내용 스택 같은거 두번쨰로 협업 능력 남탓 하지 않기 나의 부족함을 알기 알고리즘 주차에서 사고방식의 복사

OSI 7개층에 대해 항해톡을 들었는데 내걸로 만들

2022-03-23 15:56:38

오늘도 집중을 못하는 나 하루에 빡집중이 얼마나 될까 싶다. 정리 못한 일주차 부터 차근차근 해야 하는데 막상 다시 하려니 막막하다. 포기하지 말자

  • 오늘은 이진트리에 관한 내용을 진행했다.

밤에 조금 더 집중이 잘되는 듯 하다

2022-03-22 12:59:11

팀배정에 관한 내용을 전달 받았다.

  • 백엔드와 프론트엔드 두명이 리더와 부리더 짝꿍이 되어 지원한다.
  • 대면 평과와 더불어 어느정도 기술적 능력은 있어야 하지만 정신적으로 팀원의 서포트와 팀을 이끌어 갈 수 있는 역량이 필요하다.

자기 반성

  • 일요일에 Vimwiki와 Vim을 셋팅하면서 굉장히 집중이 잘되었다고 자만하던중어제 오늘 집중을 못하고 있다.
  • 해야될것을 미루는 중인데 차근차근 다시 작성해야겠다. 항해가 끝나기 전까지는 항목에 있는 모든 것들이 채워지길 바란다.
  • [[MVC]] 모델에 관한 내용을 오늘에서야 처음 알았다. 공부해야될게 많다.

2022-03-21 08:11:29

부트캠프 3주차 시작 여태 앉아있는게 어수선하고 졸립고 힘들었는데 이제 조금씩 적응되면서 집중할 수 있다. 블로그에 정리하는게 머리속에 더 잘들어오는거 같다

오늘 발표하신분의 퀄리티가 너무나 좋았다. 이름을 잊어버렸는데… 재귀 함수와 loop구분의 차이점을 쉽게 설명해주시면서 스택오버플로우가 왜 생긱는지에 대해 자세히 설명해주셔서 이해가 빨리됐다. 나도 한번 정리해야겠다

2022-03-20 19:25:10

WIL [작성중]

  • 알고리즘 주차가 시작되었다.
  • 이 항목들을 많이 봐왔지만 맨날 졸립기만 하다 여전히
  • 파이썬으로도 다시 공부해야기 때문에 시간도 많이 걸리고 문법도 다시 이해해야한다.
  • [[array]]{배열}
  • [[linked-list]]{링크드리스트}
  • [[stack]]{스택}
  • [[queue]]{큐}
  • [[hash-table]]{헤시테이블}

2022-03-20 17:48:51

하루종일 vim + vimwiki랑 싸우다가 이제서야 정리를 한다 결국에는 버전 문제 였구나.. 몇시간동안 헤매다가 이렇게 잘되는군…..

2022-03-20 14:57:35

오늘부터 이렇게 쓸것이다