프랑스 이직, 첫 인터뷰 기회를 얻다. Good news! 지난 글에서, quick call을 했던 프랑스의 한 tech 회사의 리쿠르터분이 좋은 소식을 들려주셨다.회사에서 비자지원과 사회보장제도까지 제공해주기로 하셨다고. 인터뷰로 move on하면 된다고 하셨다. 프랑스 이직을 꿈꾸며, 링크드인 네트워킹을 시작하다.Who are you 나는 5년차 소프트웨어 엔지니어 혹은 데브옵스 엔지니어이다. IT업계에서 계속 일을 하다가, 현재 자동차 산업에서 일하게된지 8개월정도 되었다. 그리고 해외 이직을 꿈꾼지는 약 2년2hyes.tistory.com인터뷰 기회만 얻게되어도 감사할 거라고 생각했던 나... 이제는 너무 긴장되고 토할 것 같다. 외국 회사 면접을 몇 번 봤지만, 한국 회사 면접과는 정말 너-무 다르기에 ... 추가로, 나는 직접적으로..
프랑스 이직을 꿈꾸며, 링크드인 네트워킹을 시작하다. Who are you 나는 5년차 소프트웨어 엔지니어 혹은 데브옵스 엔지니어이다. IT업계에서 계속 일을 하다가, 현재 자동차 산업에서 일하게된지 8개월정도 되었다. 그리고 해외 이직을 꿈꾼지는 약 2년이 넘었다. 이제 5년차쯤 되었으니 "이직"이라는 게 가능해졌다. 처음에는 너무 꼬꼬마 주니어였어서ㅎㅎ,,, 사실 지금 자동차 산업으로 이직한 것도, 외국 글로벌 대기업 회사에서의 업무경험을 쌓기 위해서였다. 한국의 스타트업에서만 있었던 나를 채용하기엔, 부담스러울테니.하여튼 나는 현재 DevOps engineer 혹은 Software Engineer로서 프랑스 파리로의 이직을 꿈꾸고 있다. For now 2025년 1월. 1월 마저도 끝나간다. 작년 연말에 개인적으로 마음아픈 일을 겪으면서, 크게 무너져..
더 큰 세상으로 떠나보자. 갑자기 왜? 나는 초등학생때부터 "나는 하버드에 갈거야." 혹은 "나는 서울대에 갈거야." 라며 입에 달고 살았었는데, 그 어린 나이때부터 어떤 걸 하고싶다기보단 소속에 대한 목표 의식을 갖고있었던 것 같다. 그렇게 초등학교, 중학교, 고등학교, 대학교 - 반수, 삼수, 대학교, 마지막 학기와 함께 취업. 이렇게 정말 쉼 없이 달려왔다. 단 한 번도 어딘가에 소속되지 않은 적이 없었다. 프랑스로 이직해야겠다고 마음먹게 된 건 2022년 10월 난생 처음 혼자 여행을 갔을 때였다. 마일리지가 곧 소멸한다는 소식에 갑자기 혼자 독일 프랑크푸르트, 네덜란드 암스테르담, 프랑스 파리 여행을 다녀왔다. 내 인생 가장 E스러웠던 때로, 혼자 다니면서 이 사람 저 사람들과 대화를 많이 나누었었다. 이 때  처음으로 ..
[Database] Materialized View 0. Materialized View Materialized View는 데이터베이스에서 쿼리의 결과를 미리 계산하여 저장하는 실제 테이블로, 데이터량이 많거나 복잡한 쿼리를 실행할 때 발생하는 성능 문제를 완화하기 위해 사용된다. 많은 양의 데이터를 처리해야 하는 경우, 복잡한 쿼리의 실행은 데이터베이스 서버에 부하를 줄 수 있고, 응답 시간이 길어질 수 있다. 특히, 필자의 경우에는 프로덕트에서 해당 API에 직접 요청을 주는데, 추후 트래픽이 증가하면 데이터베이스의 성능이 저하되어 서비스 중단이 발생할 위험이 있다고 판단했다. materialized view 테이블에 대해서 몰랐던 나는, ETL 잡을 돌리면서 쿼리 결과를 DB테이블 생성해서 저장해두는 방법을 생각했었다. 그러나 매일 바뀌는 연산 결과..
[APIdoc] REST API 문서화 툴 오늘은 REST api를 문서화하는 툴인 apidoc 사용법에 대한 글을 작성하고자 한다. 필자의 팀 내에서 api 문서는 Swagger 툴을 활용해서 문서화를 했었다. 그마저도 swagger를 사용하기보다는, 알아서 코드보고 파악하거나 해당 api개발자에게 간단한 명세를 요청하는 정도로 해결했었지만, 타사와의 협업할 기회가 생겨, api 명세서를 전달할 일이 생겼다. 깔끔하게 api 문서화를 해야했고, 팀의 판단으로는 Swagger 보다는 apidoc이 깔끔하고 한 눈에 들어온다고 생각했다. 결론적으로 apidoc 툴을 사용해서 명세서를 다시 작성하기로 결정했다. 초반에 Swagger를 선택했던 이유는, 팀 내에서만 api를 사용했기때문에, 운영에 리소스를 많이 들이지 않는 것이 목표였기 때문이다. 초..
[Ansible] Ubuntu 환경구성해보기 오늘은 Ansible로 ubuntu 환경구성하는 playbook을 직접 짜보려고 한다. 배경으로는 팀 내 프로덕트 장비들이 ubuntu 21을 사용하고 있었는데, ubuntu 22가 (작년에) 출시되면서 호환되지않는 장비들이 생겼다. 와이파이 랜카드 등... 이를 이유로 ubuntu 22.04로 드디어 업데이트해보려고 한다. Ansible을 활용해서 구성하면, 사실 업데이트라기보다는 처음부터 새로 구성하는 것이 맞는 말이긴 하다ㅎㅎ. 1. control node에 ansible, python 설치 복습) - managed node(host): 환경 구성의 대상이 되는 컴퓨터들. Host, Target 등등으로도 표현한다. - control node: 앤서블 플레이북을 수행하는 서버. linux/unix ..
[Ansible] 개념 공부 환경 구성 자동화 도구로는 가장 기초적으로 bash shell script을 사용한다. 현재 필자도 팀에서 환경구성을 쉘스크립팅으로 하고 있고 안정화 단계에 이르렀지만, 쉘 스크립트로는 완전히 자동화할 수 없는 영역들이 분명히 있기에, 초기에 스크립팅을 했던 필자에게만 환경 구성에의 정보가 쏠려있다는 단점이 있었다. 또한 아무리 매뉴얼을 작성해놓았다고 해도, human error는 항상 존재했다. 작업이 복잡해질 수록 human error가 생길 수 있는 여지는 더 커졌고, 인프라에 맞게 확장하기 어려워졌다. 이러한 이슈를 해결할 수 있는 방법을 고안하다가 알게 된 것이 Infrastructure as Code였다. 처음에는 조금 더 팀원들이 직접 관여하고 이해하기 위해 스크립팅을 했다면, 이제는 자동화..
[Fluentbit] 로그데이터 수집하기 팀 프로덕트에서 로그 수집기로 사용하는 툴인 fluent-bit을 소개하려고 한다. fluent-bit란? 로그 데이터를 수집, 필터링, 변환해서 대상 시스템으로 전달해주는 오픈소스 데이터 수집 툴(data collector)이다. 서버에 실시간으로 쌓이는 log파일들을 지정해서 수집 하며, http, tcp 통신을 통해 fluentd로 직접 전송이 가능하다. 다양한 Input, Output 플러그인을 지원하고 있고, 로그 데이터를 다양한 형식으로 전송할 수 있다. Elasticsearch, InfluxDB, Kafka,AWS S3등의 데이터 저장소와 통합하여 사용할 수 있으며, 필자는 fluent-bit으로 로그데이터를 수집하여 S3로 전송하도록 구성하여 사용하고 있다. 궁금했던 것 1. Fluent-..
[프로젝트 회고] 광고 성과 최적화 최근 회사에서 진행했던 프로젝트에 대한 간단한 소개와 어떤 구조의 시스템으로 설계되었는 지 설명해보려고 한다. 프로젝트의 이름을 붙여보자면 '광고 성과 최적화' 정도가 될 듯하다. 간단히 소개하자면, 초반에 광고들을 특정 횟수이상 만큼을 노출시킨 후, 성과를 측정해서 더 성과가 좋았던 광고를 선택해서 재생시키는 시스템이다. 성과를 어떻게 측정하냐고 물어본다면, 측정을 위해서는 MAB 알고리즘이 사용되는데, MAB모델 / 알고리즘보다는 해당 프로젝트의 시스템 자체에 대해 작성하고자 한다. 아키텍쳐 구성도 이 프로젝트에는 크게 서버에서 작동되는 코드가 있고, 광고가 재생 및 노출되는 클라이언트에서 작동되는 코드가 있다. 서버로는 크게 스케줄러 서버와 api 서버로 구성되며, 서버 사이드와 클라이언트 사이드에..