본문 바로가기

Development

(135)
항해99를 마치며 회사를 다니며 의사 결정에 있어 데이터의 역할이 얼마나 중요한지 깨닫게 되었고 그 부분에 있어 내 능력의 부족함이 점점 명확해졌다. 평생 직장과 직업이 없는 시대에 나의 커리어를 지속해 나가기 위해 방향 전환을 결정했다. 짧고 굵은 고민 끝에 우선 개발을 배워보기로 했고 코딩을 배울 방법을 찾아보았다. 몇년 전부터 개발자라는 직업이 떠오르고 정부 정책으로 지원도 많이 해주는 것 같았다. 내 선택 기준의 우선 순위는 교육 기간이었다. 교육 비용과 생활비를 고려했을 때 6개월 이상의 교육 기간은 내게 부담으로 다가왔다. 그러던 중 스파르타의 항해99라는 부트 캠프를 알게되었다. 우선 한 기수당 정규 교육 기간이 3개월이라는 점이 최우선 조건을 만족했다. 거기다 엄격한 교육생 선발 과정과 타이트한 커리큘럼 또..
WIL_최종 프로젝트 6주차 (종료) 지난주 회고 길고도 짧았던 최종 프로젝트가 끝이 났다. 중간 어느 시점엔 깜깜한 터널에 갇힌 것처럼 답답할 때도 있었지만 결국 시간이 해결해 준 것 같다. 완성도를 떠나서 개인적으로 매우 많은 발전을 했다고 생각한다. 다음주 목표 최종 프로젝트는 끝이 났지만 이제 또 다른 시작이다. 진정한 의미론 이제 겨우 한 발자국을 내딛은 것이다. 다시 집중해서 좋은 이력서 만들기에 집중해보자. 이력서 작성 CS 공부 코딩 테스트 준비 지원할 회사 리스트업
Thread, Thread Pool 프로세스 프로그램을 실행하는 주체, 자신만의 고유 공간과 자원을 할당받아 사용한다. 프로세스는 메모리 상에서 실행중인 프로그램을 말하며, 스레드는 이 프로세스 안에서 실행되는 흐름단위를 말한다. 프로세스는 최소 하나의 스레드를 보유하고 있으며, 각각 별도의 주소 공간을 독립적으로 할당 받는다. (code, heap, stack) 스레드 작업을 처리해주는 주체, 다른 쓰레드와 공간 및 자원을 공유하면서 사용한다. 스레드는 자원 중에 stack만 따로 할당받고 나머지 영역은 스레드끼리 서로 공유한다. 프로세스와 스레드 비교 프로세스는 운영체제로부터 별도의 메모리 영역을 할당받는다. 스레드는 stack을 제외한 공유자원(code, data, heap) 부분은 공유해 서로 읽고 쓸 수 있게 된다. 프로세스와 스..
프로젝트 간단 소개 영상 제작 항해99의 최종 프로젝트 발표일이 3일 앞으로 다가왔다. 총 6주 동안의 최종 프로젝트 기간에서 마지막 1주일은 프로젝트의 기획, 실행, 트러블 슈팅등의 전반적인 내용을 문서화하는 기간이다. 팀 노션에 기술 스택이나 트러블 슈팅등의 내용은 정리가 거의 끝나서 프로젝트 간단 소개 영상을 제작해봤다. 간단 소개 영상 예시를 봤는데 크게 두 가지 컨셉으로 나뉘는 것 같았다. 첫 번째는 영상 편집 기술 측면에서 퀄리티는 다소 떨어지지만 유머러스한 컨셉, 두 번째는 프로젝트 시연 영상의 일부를 잘라낸 정석적인 컨셉이다. 운영 매니저님에게 받은 팁은 대부분의 팀들이 두 번째 컨셉으로 가는데 프로젝트 발표 영상이나 시연 영상이 비슷한 분위기라서 약간의 유머를 곁들여 재밌게 만들어 보는 것도 좋다는 것이었다. 그래서 ..
스트레스 테스트2 (feat. 배포 서버 다운) 오늘은 최종 프로젝트 브로슈어 제출일이었다. 브로슈어에 스트레스 테스트 지표를 추가하기 위해 무비위키의 배포된 서버에 테스트를 진행하던 중 과부하로 인해 서버가 다운이되었다. 비용을 투자하여 서버 성능을 업그레이드 시키느냐 로컬에 테스트를 진행하느냐 고민하다가 브로슈어 제출 시간이 얼마남지 않아 로컬에 빠르게 테스트를 진행하기로 했다. 배포된 서버는 aws의 프리티어를 이용한 것이라 성능이 로컬 서버와 큰 차이가 나지 않는다. 테스트 진행 artillery는 시나리오 테스트 진행을하면 결과를 json 파일로 저장을 하고 저장된 데이터를 바탕으로 테스트 결과를 visualizing 해준다. 그래서 단일 API 테스트였지만 시나리오 파일을 작성하여 진행했다. 먼저 root 디렉토리에 테스트를 진행할 시나리오..
WIL_최종프로젝트 5주차 지난주 회고 목표했던 기능 고도화와 성능 개선을 모두 진행하지 못했다. 최종 발표회가 1주일 앞으로 다가와 우선적으로 해야할 일이 생겼기 때문이다. 현재 프로젝트에 적용된 기술 및 트러블 슈팅과 같은 회고의 문서화 작업이 우선순위가 되었다. 그래서 내가 맡았던 기능과 그 기능을 구현하기 위해 적용했던 기술들에 대한 회고를 진행했다. 이번주 목표 아직 서버 스트레스 테스트가 완료되지 않았다. 빠르게 마무리하고 발표 ppt 작업을 진행해야한다. 발표 준비를 완료하고 시간이 남아 미처 하지 못했던 기능 고도화와 성능 개선을 진행해 볼 수 있었으면 좋겠다.
스트레스 테스트 (feat. artillery) 무비위키 프로젝트에 멀티 프로세싱을 적용하고 성능을 테스트해보기 위해 artillery로 스트레스 테스트를 진행했다. Artillery란? 오픈 소스 로드 테스트 도구로, 소프트웨어 애플리케이션의 성능과 신뢰성을 평가하기 위해 사용한다. 주로 웹 애플리케이션, 마이크로서비스, API 등 다양한 유형의 애플리케이션을 대상으로 테스트 가능하다. Node.js로 작성되었으며, 사용자가 시나리오를 정의하고 해당 시나리오에 따라 애플리케이션에 부하를 가하는 방식으로 동작한다. 시나리오는 사용자의 요청과 동작을 정의하며, 테스트를 위해 다양한 유형의 요청을 생성하고, 트래픽을 모니터링하고, 성능 지표를 측정할 수 있다. 강력한 스트레스 테스트 기능을 제공한다. 여러 사용자 요청의 동시성, 요청 속도, 지연 시간, ..
Redis Sorted Set (Zset) 무비 위키 메인 화면에 인기리스트를 띄워주기 위해 Redis의 Sorted Set을 사용해보았다. 기존에는 특정 영화를 검색해서 조회하면 db에 해당 영화의 movieId를 참조하여 view 컬럼의 숫자를 1 증가시켜주고 그 숫자를 기준으로 내림차순 정렬해 상위 5개의 영화를 메인 화면에서 보여주고 있었다. 거기에 실시간 현황을 반영해 주기 위해 방법을 약간 바꾼 것이다. Sorted Set (Zset)이란? 정렬된 집합으로 값을 정렬된 순서로 저장하면서 각 값에 고유한 식별자인 score를 부여하는 데이터 구조이다. sorted set은 key-value 구조로 되어 있는데 key는 문자열이며 value는 정렬된 순서로 저장되는 요소들의 집합니다. 각 요소는 고유한 member로 식별되며 member와..