제11회 빅데이터분석기사 합격 후기
·
Study/Others
어떻게 합격하여 이렇게 합격 후기를 작성하게 됐다.필기는 어찌 한방에 합격했지만 실기는 그렇게 자신이 있진 않았다.필기에서 공부한 개념들을 실기에서 내가 제대로 코드로 쓸 수 있을까? 라는 의문이 있었기 때문.그래도 합격했으니 참으로 다행이라고 생각한다. 점수 잘 난 점수는 아니지만...합격했다는 것이 중요하다! 배경빅데이터분석기사 공부 시작 전 나의 상황 1. 컴퓨터공학 전공2. 파이썬으로 필요한 프로그램 작성해 활용한 경험 有3. 통계 문외한 - 학부 때 통계과목 1학기 수강 그냥 코드 작성에만 좀 익숙한 완전한 노베이스 상태였다. 사용한 교재 https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=343937260 2025 이기적 빅데이터분석기사 필기 기본..
AI로 MSA 서버 만들어 보기 #4 : Write-Behind
·
Study/C++ & C#
1. 컨셉단순한 서버는 "DB 트랜잭션이 끝나야만 유저에게 OK를 보낸다"는 Write-Through 방식을 많이 사용한다.하지만, 이는 DB가 병목이 될 경우 전체 서버의 반응성을 크게 저하할 수 있다.Write-Behind (Write-Back) 패턴은 이를 해결할 수 있다.Memory First: 메모리(또는 빠른 캐시인 Redis)에 먼저 쓰고, 유저에게 즉시 OK를 준다.Disk Later: 실제 견고한 저장소(RDBMS)에는 별도의 워커가 천천히, 모아서 기록한다.본 서버는 이 패턴을 Redis Streams를 통해 구현했다. 2. 아키텍처Decoupling: 채팅 로직(Fast)과 저장 로직(Slow)이 완벽히 분리된다.Peak Load Handling: 트래픽이 폭주하면 Redis Stre..
AI로 MSA 서버 만들어 보기 #3 : Gateway
·
Study/C++ & C#
1. 아키텍처 개요Gateway는 클라이언트와 서버(Game Server) 사이의 Single Entry Point이다.Nginx나 HAProxy 같은 범용 LB와 달리, 세션의 상태를 파악하고 세션 유지(Stickiness)를 수행하는 커스텀 L7 프록시이다.서버가 지속적으로 Redis에 하트비트를 보내 살아있음을 알린다.Gateway는 Redis에서 서버 상태를 읽고 적절히 트래픽을 분산한다. 2. 주요 책임L7 Load Balancing: 서버들의 부하(접속자 수)를 모니터링하여 최적의 서버로 트래픽을 분산한다.Session Binding (Stickiness): 유저가 잠시 연결이 끊겼다 재접속해도, 로직 처리를 위해 반드시 이전에 접속했던 서버 인스턴스로 보내준다.지금의 단순한 채팅 서버에선 필..
AI로 MSA 서버 만들어 보기 #2 : Server
·
Study/C++ & C#
이전에 Core 라이브러리에 대해 설명했다.여기선 해당 라이브러리를 활용해 작성된 Server에 대해 얘기해 보자.1. 아키텍처 철학Server는 "Massively Chat Server"를 지향하며, 다음 3가지 핵심 철학을 지향한다.Gateway-Centric Architecture:클라이언트는 오직 Gateway(w/ L7 Load Balancer)하고만 연결한다.Gateway는 뒷단에 있는 N개의 Server Node 중 하나로 트래픽을 전달한다.Effect: 서버 노드 추가/삭제가 자유롭고(Elasticity), 클라이언트는 IP 변경 없이 그대로 사용 가능.Safety First (Concurrency):Global Mutex + JobQueue: 모든 패킷 처리는 I/O 스레드에서 분리되어 ..
AI로 MSA 서버 만들어 보기 #1 : Core
·
Study/C++ & C#
백엔드란 어렵다.특히 그게 IOCP라면 더욱더.네트워크에 대한 지식뿐만 아니라, IOCP에 대해서도 이해가 필요하다.이전에 ``Boost.Asio``를 통한 서버 공부를 진행했지만, 마음처럼 되지 않았다. 하지만 지금이 어떤 시대인가?대 AI 시대가 열렸고, 엄청난 성능의 모델이 등장했다.지금이라면 내가 원하는 형태의 코드를 AI가 작성해 줄 수 있고, 실제로 동작하는 그러한 코드들을 보며 공부할 수 있다.때는 ``GPT-5``가 갓 나왔을 때. "AI로 ``Boost.Asio``를 기반으로 한 Windows와 Linux 양쪽에서 사용할 수 있는 멀티 플랫폼 서버를 만들어 보자"라고 생각했다. 시작은 ``GPT-5``였지만, ``GPT-5.1``, ``Claude Sonnet 4.5``, ``Gemini..
제11회 빅데이터분석기사 필기 짧은 후기
·
Study/Others
내가 이걸 공부하게 될 줄이야.어쩌다 불가항력으로 인해 공부하게 됐다.공부해서 손해 볼 건 없지.언젠간 내 인생에 도움이 되지 않겠나? 6월 즈음에 책을 주문해 공부를 시작했다.정보처리기사 공부할 때를 생각하고 이걸 빨리 보고 다른 출판사의 교재도 보겠노라 생각했었다.생각해 보면 내 전공이 전공인 만큼 정보처리기사는 공부 요구량이 대단히 적었다.게으름 이슈도 있고 통계라곤 대학 시절 1학기만 들은 것이 다였다.하지만 그것조차 제대로 하지 못했기에 저거 다 보는 것만으로도 벅찼다.한 마디로 요약하자면 "아는 게 하나도 없는 노 베이스" 상태였다는 것이다. 잘 기억이 나지 않거나 처음 보는 개념들을 열심히 외워야 했다.CRISP-DM 방법론의 진행 순서는 뭐고 데이터의 품질 지표는 뭐고...뭐 중간에 익숙한..
[JS] 디스코드 봇에 PLL 정보 출력하게 하기
·
Study/Javascript
KupoBot이라는 FF14 관련한 많은 기능을 제공하는 봇이 있다.그런데 이것이 요즘은 꽤 답답하다.시대가 언젠데 슬래시 커맨드도 안되고... 주로 요청하게 되는 정보는 점검과 PLL 관련 정보인데,아마도 관리자가 직접 정보를 삽입하는 것 같다.공지가 올라온 지 한참 지났음에도 정보를 가져오지 못한다. 점검 같은 경우는 정규식으로 RSS Feed를 파싱해 최신 점검 정보를 가져오게 해 놨다.한번 파싱 하면 그걸 저장해 놨다가 재활용한다.PLL도 그런 식으로 파싱 할 수 있으므로 똑같은 흐름으로 명령어를 만들게 됐다. 1. 그전에 점검 파싱부터먼저 점검 정보 파싱이 어떻게 이루어지는지 보자. async function getMaintData() { const feedUrl = "https://jp.fi..
[TIL #35] 데드락에 죽다 살다
·
Camp/T.I.L.
현재 진행 중인 프로젝트는 레이드 컨텐츠 입장을 위해 큐를 사용한다.최초로 개발하며 개념 검증 시엔 원시적인 큐만 사용했고, 이는 동시성 문제어 이어질 수 있었다.따라서 Bull을 도입하게 됐다.  하지만 Bull만 도입한다고 되는 것은 아니었다.Bull 자체의 ``Job``에 대해선 원자적 처리를 보장하지만 그 이외의 부분에 대해선 원자적 처리가 보장되지 않는 상황이다.각각의 필요한 모든 부분에 대해 명시적으로 락을 걸어 완전한 원자적 처리를 보장해야 했다.이러한 처리를 위해 async-lock을 도입했다. // pendingGroups 접근을 안전하게 하기 위한 헬퍼 메서드async withPendingGroupsLock(fn) { return this.pendingGroupsLock.acquire..
[TIL #34] Docker 및 Docker Compose 올려보기
·
Camp/T.I.L.
도커를 올려보기로 했다.이미 라즈베리 파이 서버에 인프라가 다 준비돼 있지만,내가 만져보면서 이해해보고 싶었던 것이기도 했고, 아마존 ECS에 올려보기 위함이기도 하다. 일단 현재 서버는 다음과 같은 상태다.Node.js 서버MySQLRedisGrafana그럼 각각의 것들을 다 컨테이너로 만들어 ``Compose``로 묶어서 빌드 후 배포할 수 있어야 하겠다. 먼저 노드 서버를 위한 ``Dockerfile``을 다음과 같이 만들었다.# Node.js 베이스 이미지 사용FROM node:20-alpine# 작업 디렉토리 설정WORKDIR "작업 디렉토리"# 패키지 파일 복사 및 의존성 설치COPY package*.json ./RUN npm install# 소스 코드 복사COPY . .# 포트 노출EXPOS..
[TIL #33] 마법의 엘리베이터
·
Camp/T.I.L.
https://school.programmers.co.kr/learn/courses/30/lessons/148653 프로그래머스코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.programmers.co.kr 모듈러 뺑뺑이 돌리는 문제.접근법은 명확한데, 특정 테스트 케이스를 통과하지 못해서 평소보다 많은 시간을 투자했다. 먼저 첫 접근부터.// 음수층은 없음// 하지만 음수층이 있는 것 처럼 생각 가능// 모듈러 지옥function solution(storey) { let total = 0; let carry = 0; while (storey > 0) { let digit ..