목록전체 글 (54)
우리네 장
맨날 까먹는 나날...앞으로는 짝꼼씩만 적어보겠습니다.. 아무래도 AI관련 프로젝트를 진행하다보면, 참고할 문서들이나 라이브러리들이 python 주류이기 때문에 python을 사용하지 않을 수가 없습니당.. 자돌이는 모든 것이 새로워서 혼란스러워요.. 오늘은 배포 할 때 패키징에 대해서 정리하겠숩니다 JVM 위에서 돌아가는 자바는 보통 .jar 나 .war로 하나의 아카이브로 패키징을 합니다.이 파일을 java 명령어를 통해서 실행하거나, tomcat과 같은 was에서 실행하죠하나의 파일로 패키징 할 때 build 과정을 거치기 때문에 필요한 외부 모듈들이 해당 파일 안에 존재하게 됩니다. 그래서 아래 명령어를 실행할 때 진짜 main 함수만 찾아서 실행만 하면 됩니다. java -jar testA..
최근 Open Ai가 관심을 많이 받게 되면서, 기업들에서 AI 기술에 집중하고 있는거 같아요!아무래도 인공지능을 도입한 서비스가 화제성이 있어서 그런거 같은데.. 저도 최근에 관련 프로젝트를 진행하게 되어 도입기를 간략하게 풀어보려고 합니다 . 🤓 저는 Azure의 Open AI 모델을 사용하고 있습니다. MS사의 LLM 모델은 크게 두 종류로 나눌 수 있어요.Completion 모델과 Chat 모델입니다. Completion 모델은 말 그대로 문장을 완성해 준다는 의미를 가지고 있어요. 그래서 LLM을 이용한 대표적인 작업들을 처리할 수 있는데, 문장 완성이라던가 요약 / 추출 / 창작 등을 위한 모델입니다. Chat 모델과 다른 점은 대화를 나누는 것이 아니라, 한 번의 질의만을 처리한다고 볼 ..
면접 때, 무중단 배포에 대한 질문을 받았엇는데.. 답변을 야무지게 하지 못했다^-^..해당 이론 역시 너무 정보가 많기 때문에, 공부용으로 기억해야 할 핵심만 적도록 하겠다! 크게 무중단 배포 전략이라고 한다면,Rolling / Blue-Green / 카나리 배포가 있겠다. 예전에 정보처리 기사 공부할 때 많이 봤었는데... Rolling운영 중인 서버를 순차적으로 LB에서 제거한 후, 더이상 트래픽이 들어오지 않는 서버에 대해 새로운 버전으로 배포를 진행하는 것을 의미한다. 이때 LB에서 하나씩 분리해도 되고, 반띵해서 한 번에 여러 대를 분리하기도 한다.현재 우리는 요 기법을 쓰고 있는데, public cloud 환경을 쓰지 않고, 사내 인프라가 IDC로 구성되어 있는 상태에서 자체적으로 clou..

최근에 4월 우아한 개발자 tech에서 virtual thread 관련 발표를 했었어용.해당 기술 설명에 ForkJoinPool 이야기가 나왔는데, 나온 김에 정리하려고 합니다! ForkJoinPool을 개발자가 직접적으로 다룰 일은 많지 않겠지만, 언급했던 virtual thread나 혹은 parallel stream에 default로 사용되기 때문에 개념적으로 알고 있는게 좋을거 같아요! 사실 해당 개념에 대한 좋은 글은 널리고 널렸기 때문에 간략하게 제 공부용으로 포인트만 남기도록 하겠습니다 ㅎ.ㅎ ForkJoinPool ? 얘도 말 그대로 pool 이에요 ..thread pool의 일종입니다. pool 안에 있는 각각의 thread가 하나의 worker가 되는거겠죠?? 기존에 저희가 알던 일반..
하드웨어적인 리소스를 모니터링 하는 툴이 아주 다양하지만, 이 수치를 해석하기 위해서는 os 지식이 필수로 필요합니다. ( + 경험치 ) 학부때 os 공부를 하지 않은 것에 후회를 느끼며 당분간은 로우 레벨단 공부를 해보려고 합니다. 첫번째 주제는 bounded process에 대해 얘기하겠습니다. 첫 주제로 선택한 이유는 내용이 가장 단순합니다ㅎ.ㅎ 더보기 burst 무엇인가가 집중적으로 일어나는 것 ( occur ) 을 의미합니다. 이를 파생하여, cpu burst 와 io burst 개념이 나옵니다. cpu burst cpu를 통해 어떤 스레드가 실행되는 간격을 의미합니다. 즉, cpu에서 해당 스래드가 시간되는 구간부터 컨텍스트 스위칭 당하기 전까지의 구간을 의미합니다. I/O burst 어떤 스..
이번에 회사에서 테스트 케이스를 작성하면서, 서버의 테스트 환경을 제한하여 정의할 일이 있었습니다. ( 이렇게 처음부터 작성은 처음이었는데 생각보다 고려할 사항들이 많더라구요..ㅠ ) 테스트 하는 작업이 실제 컴퓨터에 어떻게 처리되는지 알기 위해서는, 기본적으로 서버에서 필수적으로 돌려야 하는 프로세스들의 cpu나 io 작업을 파악할 필요성이 있었고, 테스트하는 작업의 성능만을 측정할 수 있도록 기타 자원 사용률은 최소로 하는 것이 목표였어요. 저는 작업을 테스트 하기 위해, N개의 이벤트를 발생시켜야 했는데, 해당 이벤트가 생성되도록 하는 명령어가 2가지였습니다. 바로 cp와 mv였어요! 결과만 놓고 본다면 두 작업 모두 같은 이벤트를 발생하고 결과도 동일하지만, 테스트하는 작업에 의도하지 않은 부가적..
최근 inotify-tools라는 디렉토리 감지 모듈을 도커를 통해 설치하면서, 같은 리눅스 계열이지만 조금씩 다른 os들을 많이 사용해 보았어요. 쉘 스크립트 파일을 보면 가장 상단에 "#!/bin/bash" 라고 하는 명령어구를 대부분의 쉘에서 모두 작성하는데, 이게 아무런 기능이 없는게 아니었습니다.. 명령어를 수행하는 쉘은 dash / bash / busybox 등의 종류가 있는데, CentOS 들은 bash shell Ubuntu 들은 dash shell을 사용하더라구요. ( busybox는 기본적으로 사용했을 때 sh가 실행이 되지 않았습니다.. ) 그래서 근본적으로는 같은 리눅스 계열이기 때문에 호환 문제가 크지 않지만, 가끔 호환되지 않는 명령어가 있더라구요. 아까 말했던, #!/bin/b..

현재 회사에서 사용하는 mac os는 M1 처리기를 사용하고 있습니다. 이전에는 intel 처리기를 사용했기 때문에, 최신 관리 되지 않는 3rd pary 모듈들은 M1을 지원하지 않는 경우가 많은데요. mac os 환경에서 디렉토리 내 이벤트를 감지하기 위해 "inotify"라는 모듈을 사용하고자 하였는데, git 에 보면 리눅스 os를 주로 지원하더라구요. mac 에서 해당 모듈을 사용하기 위해서는 프로그램 파일을 os 환경에 맞게 기계어로 컴파일 한 후 쫙 읽어서 실행해야 합니다. 이 경우, 컴파일 과정에서 프로그램에 필요한 환경 변수를 설정할 수 있는데요. 구동 이후에 변경할 수가 없습니다. 그래서 docker를 이용해서 이미 inotify가 설치되어 있는 이미지를 사용해 테스트를 해보려고 했어요..