기술 블로그 모음

국내 IT 기업들의 기술 블로그 글을 한 곳에서 모아보세요

전체 프론트엔드 백엔드 데브옵스 AI 아키텍처 DB 네트워크 보안 기타
AWS OpenSearch 기반 EFK Stack 구축기
올리브영
AWS OpenSearch 기반 EFK Stack 구축기

안녕하세요. 인벤토리 스쿼드 백엔드 개발자 펭귄대장입니다! 인벤토리 스쿼드에서 재고 변경 이력을 관리하기 위해 OpenSearch + EFK 를 구축하게 되어 소개 드립니다. 이전 포스팅에서 자주 언급되었듯이, 올리브영은 Datadog…

GitHub Actions 활용하기
네이버 페이
GitHub Actions 활용하기

안녕하세요, 네이버 페이에서 프론트엔드를 개발하고 있는 이창재입니다.네이버 파이낸셜에서는 GitHub를 통해 코드를 관리하고 있고, 자연스레 GitHub Actions를 활용하여 효율성을 더하고 있습니다.이번 글에서는 실제 사용중인 GitHub Actions 중 간단한 예시와 함께 해당 개념에 대해 소개하고자 합니다. 시작에 앞서 기본 개념을 짚고 넘어가겠습니다.👀 GitHub Actions?GitHub Actions란 GitHub 저장소를 기반으로 워크플로우를 자동화 할 수 있는 도구, GitHub가 제공하는 완전관리형 CI/CD 툴입니다.✒️ CI/CD?참고 자료 : RedHat 문서 — CI/CD란?📄 CI(Continuous Integration) — 지속적인 통합* PR이나 push된 코드를 빌드 및테스트하는 프로세스를 자동화하고, 이러한 프로세스를 거친 후 코드를 merge해 주는 자동화 프로세스입니다.* 이 과정에서 충돌이나 Lint, 정상 동작 등 자동화된 테스트를 실행하여 변경 사항을 검증합니다.📄 CD(Continuous Delivery, Deployment) — 지속적인 제공 및 배포* Delivery(지속적 제공) : CI를 거친 후 레포에 업로드되는 것을 의미합니다.* Deployment(지속적 배포) : 배포과정을 자동으로 처리해주는 것을 의미합니다.📄 CI/CD의 목적반복적인 일(빌드, 테스트, 배포 작업 등)을 처리하고 그 과정에서 이슈 발생 시 경고해주는 등, 자동화된 파이프라인을 통해 코드 변경과 배포 단계를 원활하게 진행할 수 있도록 해 줍니다.이 과정에서 시간 절약 및 사람이 직접적으로 처리할 때 발생하는 실수, 즉 휴먼에러를 방지할 수 있습니다.🎯GitHub Actions 특징* 컨테이너(도커) 기반으로 동작합니다.* 개발자는 워크플로우를 작성하여 다양한 이벤트 기반으로 실행시킬 수 있습니다.* 워크플로우는 Runners라 불리는 인스턴스에서 리눅스, 맥, 윈도우 환경에서 실행됩니다. (동시 테스트도 가능!)* GitHub 마켓 플레이스에서 필요한 Workflow를 찾아 사용할 수 있고, 직접 만들어 마켓 플레이스에 공유할 수도 있습니다.😄GitHub Actions의 장점* 다른 CI/CD툴(ex. 젠킨스)처럼 별도 서버 설치와 같은 복잡한 절차 없이 사용이 가능합니다.* 즉 GitHub에서 제공하는 완전 관리형 서비스이므로 설정이 매우 간편하고 GitHub API에도 쉽게 접근할 수 있습니다.* 비동기적 병렬 실행이 가능한 CI/CD입니다.* GitHub 마켓플레이스를 통해 필요한 워크플로우를 내려 받거나 공유할 수 있습니다.🤔GitHub Actions의 단점* 서버에 장애가 일어나거나 리소스를 초과할 경우 개발자가 직접 문제를 해결해야 합니다.⚙️GitHub Actions 핵심 개념참고자료 : GitHub Docs — GitHub Actions 이해Workflows* GitHub Actions의 기본 구성 단위로써 가장 최상위 개념입니다.* 자동화된 프로세스가 정의되어 있는 파일로 YAML 파일에 정의됩니다.* 하나 이상의 작업을 포함할 수 있으며 해당 파일을 실행할 규칙, 동작 등이 작성되어 있습니다.Events* 워크플로우를 시작하는 트리거(push, PR 등)로써, 워크플로우 파일 내에 정의됩니다.Jobs* 워크플로우 내에서 실행되는 개별 작업입니다.* 이벤트로 워크플로우가 실행되면 Job에 작성된 명령들이 Runner에서 실행됩니다.* 기본적으로 Job들은 병렬로 실행되지만, 서로 의존관계를 가질 수도 있고 직렬로 실행할 수도 있습니다.* Job은 자신의 환경 설정과 Steps를 가지고 있습니다.Steps* Job내 작업의 가장 작은 단위입니다.* 각 step들은 스크립트나 명령어 또는 액션을 실행할 수 있습니다.Actions* 작업 흐름에서 공유 및 결합할 수 있는 재사용 가능한 코드 단위입니다. 컴포넌트라고 볼 수 있습니다.* 마켓에 등록되어 있는 Action을 가져오거나, 별도 레포에 작성하여 해당 레포의 이름으로 워크플로우의 파일에서 참조할 수 있습니다.Runners* 워크플로우가 실행되는 가상 머신 또는 자체 호스팅 환경입니다.* 기본적으로 GitHub에서 워크플로우를 구동할 리눅스, 윈도우, 맥OS 운영체제의 Runner를 제공하며, 필요시 self-hosted-runner를 등록할 수도 있습니다.GitHub Actions에는 도커(Docker) 컨테이너 액션, 복합(Composite) 액션, 그리고 자바스크립트를 활용한 액션, 이렇게 3가지 종류의 액션이 존재합니다. 그 중 이번 글에서는 자바스크립트를 활용한 액션 예시를 준비했습니다.아래는 해당 예시를 위한 특정 상황입니다.정기배포 이후 릴리즈 브랜치를 alpha나 beta와 같은 기존 작업 브랜치에 머징해야 할 필요성이 있습니다.하지만 해당 PR 생성 후 Lint나 Unit Test와 같은 테스트 워크플로우들이 모두 실행 완료될때까지 기다리기엔 너무나도 귀찮습니다. 가끔 일에 치여 머징하는걸 깜빡하고 한참 후에 최근 릴리즈 브랜치가 반영되지 않았다는 것을 깨닫기도 합니다.따라서 특정 워크플로우 체킹이 완료된 후 source branch가 `release/`로 시작하면 머징을 진행하는 자동화된 워크플로우가 있으면 좋겠다는 생각을 하게 됩니다.해당 예시의 전체적인 레포 구조는 위와 같습니다.📑action.yaml가장 먼저 action에 대해 작성할 필요가 있습니다.기본적으로 해당 action의 설명과 필요한 파라미터를 기술하는 부분으로 크게 name, description, inputs, runs, branding 5가지 섹션으로 나누어져 있습니다.이 중 name, description, runs는 필수로 작성해주어야 합니다.name: Auto merge when head branch starts with 'release/'description: 'Prevent merging if a specific label is attached to a PR'inputs: token: description: 'Github token' required: true workflow: required: true description: 'File name of the workflow you wanna wait for' interval: description: 'The interval between workflow checks (default is 3s)'runs: using: 'node16' main: 'dist/index.js'📄inputsinputs.<input_id> — token, workflow, interval필요한 input 파라미터의 변수명을 지어줍니다. 이 변수명은 나중에 js 코드상으로 불러올때 필요하기에 의미에 맞게 작성할 필요성이 있습니다.inputs.<input_id>.descriptioninput 파라미터에 대한 설명을 적어줍니다.inputs.<input_id>.required필수 파라미터 여부를 표시해줍니다.inputs.<input_id>.default필요 시 디폴트 값을 설정해 줍니다. 이때 무조건 string 값만 사용할 수 있습니다.📄runsruns.using코드를 실행시킬 환경을 설정합니다. (필수)runs.main실행할 필수 작업 코드가 포함된 파일의 main path를 지정합니다. (필수)runs.env필요한 환경변수를 지정합니다📄branding마켓플레이스 배포 시 표시될 아이콘을 설정해 줍니다.📑src/index.ts본격적인 action 작업코드를 작성하는 파일입니다.해당 자바스크립트 코드 작성 도와주는 다양한 툴킷이 존재합니다.여기서는 @actions/core와 @actions/github을 사용하여 개발을 진행하였습니다.* @actions/core: workflow에 대한 inputs, outputs, logging 등의 함수를 제공합니다.* @actions/github : 인증된 Octokit client를 제공해줍니다.import * as core from '@actions/core'import * as github from '@actions/github'async function run(): Promise<void> { const workflows: string[] = core .getInput('workflow', { required: true, }) .split('|') .map((item) => item.trim()) const interval: number = +core.getInput('interval') * 1000 || 3000 const token: string = core.getInput('token', { required: true, }) const memes = [ '잘했어요 밈1', '잘했어요 밈2', '잘했어요 밈3', '잘했어요 밈4', '잘했어요 밈5', '잘했어요 밈6', ] const octokit = github.getOctokit(token) const {pull_request} = github.context.payload const {owner, repo} = github.context.issue const pr_number = pull_request?.number const head_ref = pull_request?.head?.ref || '' try { for (const workflow of workflows) { core.info(`Waiting until workflow ${workflow} ends`) let workflowIsRunning do { await new Promise((resolve) => setTimeout(resolve, interval)) workflowIsRunning = await checkIfWorkflowIsRunning(workflow) } while (workflowIsRunning) } if (pr_number && head_ref.startsWith('release/')) { await octokit.rest.pulls.createReview({ owner, repo, pull_number: pr_number, body: memes[Math.floor(Math.random() * memes.length)], event: 'APPROVE', }) await octokit.rest.pulls.merge({ owner, repo, pull_number: pr_number, merge_method: 'merge', }) core.info('LGTM & Merge') } else { core.info(`Check exist PR number : ${pr_number} or source branch(${head_ref}) starts with release/`) } } catch (error) { if (error instanceof Error) { core.setFailed(error.message) } }}run()async function checkIfWorkflowIsRunning(workflow: string): Promise<boolean> { const token: string = core.getInput('token', { required: true, }) const octokit = github.getOctokit(token) const {owner, repo} = github.context.issue const { data: {workflow_runs}, } = await octokit.rest.actions.listWorkflowRuns({ owner, repo, workflow_id: workflow, per_page: 5, }) return workflow_runs.some( (workflow_run) => workflow_run.status === 'queued' || workflow_run.status === 'in_progress', )}📄input값 가져오기위 action.yaml에서 지정한 input값의 경우 core.getInput({input_변수명})으로 불러올 수 있습니다.input값을 가져오는 방법만 안다면 나머지 로직의 경우 개발자가 원하는 대로 작성할 수 있습니다.위 예시에서처럼 github의 기능(pull request 작성, apporve, merge 및 owner, repo등 값 추출 등)을 사용하고 싶다면 octokit document를 참고하여 작성해 주면 됩니다. 😎🚀만든 액션 사용해보기위와 같이 작성된 액션은 사용하고자 하는 레포의 ./github/workflows 폴더 내에 워크플로우를 작성하여 사용할 수 있습니다.# 워크플로우의 이름입니다.name: test-workflow# 워크플로우를 동작하게 하는 트리거입니다.# 해당 트리거의 종류는 아래 GitHub Docs에서 확인할 수 있습니다.# https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows#pull_requeston: # 여기서는 alpha, beta 브랜치를 대상으로 pull reqeust가 발생할 때 트리거링되도록 작성되었습니다. pull_request: branches: - alpha - beta# 위에서 서술한 jobs의 핵심 개념과 동일한 개념입니다.jobs: # 여기서는 call-workflow라는 하나의 job을 작성하였습니다. call-workflow: # 구동 환경입니다. 여기서는 리눅스 환경에서 실행합니다. runs-on: ubuntu-latest # 위에서 서술한 steps의 핵심 개념과 동일한 개념입니다. # 상세 내용은 아래 GitHub Docs에서 확인할 수 있습니다. # https://docs.github.com/en/actions/using-workflows/workflow-syntax-for-github-actions#jobsjob_idsteps steps: - name: check PR # 사용할 액션 위치입니다. 소유자/저장소@브랜치 형태로 가리켜주면 됩니다. uses: common/auto-release-merge-action@main # with 키워드를 통해 action에 값을 전달할 수 있습니다. # 이전 작성한 액션에서 token, workflow 파라미터를 필수 필요로 했으므로 해당 값을 전달해 줍니다. with: token: ${{ secrets.ACTION_TOKEN }} workflow: 'ci.yaml | lint.yaml'여기서 token의 secrets 값의 경우 레포 세팅 탭에서 설정할 수 있습니다.Settings > Secrets and Variables > Actions 에서 환경변수를 생성하여 secrets.환경변수명 으로 호출할 수 있습니다.GitHub Actions를 사용할 때 민감한 정보의 경우는 여기서 관리하면 좋습니다.네이버 파이낸셜에서 사용중인 GitHub Actions 중 간단한 예시를 개념과 함께 살펴보았습니다.GitHub Actions은 이 글에서 설명된 작업 말고도 훨씬 다양한 상황에서 사용될 수 있습니다. 여러분들의 레포에서 단순 반복되는 작업이 존재한다면 이번 기회에 GitHub에게 맡겨보는 건 어떨까요? 😊이 포스트가 여러분들께 조금이나마 도움이 되었으면 합니다. 읽어주셔서 감사합니다 🙇‍♂️🔖참고 자료* RedHat 문서 — CI/CD란?* Github Actions or Jenkins? Making the Right Choice for You* GitHub Docs — GitHub Actions* Octokit DocumentGitHub Actions 활용하기 was originally published in NAVER Pay Dev Blog on Medium, where people are continuing the conversation by highlighting and responding to this story.

상품데이터 Pipeline을 위한 Debezium MSK Connect
올리브영
상품데이터 Pipeline을 위한 Debezium MSK Connect

안녕하세요! 상품스쿼드 백엔드 개발자 빽곰입니다. 상품스쿼드에서 상품데이터 Pipeline을 위해 도입한 Debezium CDC…

왓챠 추천 서비스 MLOps 적용기 Part2
WATCHA
왓챠 추천 서비스 MLOps 적용기 Part2

안녕하세요. 왓챠 ML팀에서 머신러닝 엔지니어로 일하고 있는 찰스입니다.이전 글에서는 기존 왓챠 ML 파이프라인 및 실험 환경이 가진 문제점에 대해서 살펴보고, 문제를 해결하기 위해 컨테이너 환경의 도입, On-premise GPU 서버와 클라우드 서비스와의 연동, ML 파이프라인과 실험 환경을 제공하기 위해 여러 서비스를 활용한 사례에 대해 살펴보았...

왓챠 추천 서비스 MLOps 적용기 Part1
WATCHA
왓챠 추천 서비스 MLOps 적용기 Part1

안녕하세요. 왓챠 ML팀에서 머신러닝 엔지니어로 일하고 있는 찰스입니다.지난 글에서는 왓챠 추천 시스템을 컨테이너 환경으로 이전하면서 발생했던 여러 고민들을 어떻게 해결했는지 살펴보았습니다. 그 이후 왓챠 ML 팀에서는 왓챠와 왓챠피디아에 사용하는 추천 모델을 다양한 요구 조건에 맞춰 고도화했고, 다뤄야 하는 모델과 데이터가 지속적으로 늘어나게 되었습...

리스와 헤이즐캐스트로 구성한 쿠버네티스 파드 클러스터링
넷마블
리스와 헤이즐캐스트로 구성한 쿠버네티스 파드 클러스터링

쿠버네티스에서는 개별 파드에서 발생한 데이터가 주변 파드에 영향을 주지 않는 것이 기본 구성입니다. 하지만 사용자가 필요하다면 공유할 수 있는 방법을 제공하고 있습니다. Apache Camel과 헤이즐캐스트와 같은 오픈 소스들은 이미 쿠버네티스에서 제공하는 클러스터링 절차에... The post 리스와 헤이즐캐스트로 구성한 쿠버네티스 파드 클러스터링 ...

중앙집중식 syslog 설정 및  관제
사람인
중앙집중식 syslog 설정 및 관제

안녕하세요. 사람인 SRE팀 박용철입니다. 시스템을 운영하시는 분이라면 대부분 syslog에 대한 감사나 모니터링을 하시고 계실텐데요, 이번 포스팅은 사람인에서 이 syslog를 어떻게 관리하고 모니터링하는지, 그리고 어떤 기준으로 알람을 분류하는지에 대한 내용을 작성하려고 합니다. 전체 구성 syslog syslog는 포준시스템프로토콜로 kernel...

Airflow Task failed Alert Mail 폭탄 회피하기
네이버 플레이스
Airflow Task failed Alert Mail 폭탄 회피하기

안녕하세요?G플레이스데이터개발 나호철입니다.제가 속해있는 G플레이스데이터개발팀은 아래와 같이 크게 3가지의 기능을 하는 Data Lakehouse를 운영하고 있습니다.PDL(Place Data Lakehouse) ArchitectureGlace CIC의 여러 서비스로부터 Protobuf로 schema가 정의된 데이터를 받아 HDFS에 적재하는 ETL ...

[여기보기] 적절한 식습관과 운동을 유지하듯 건강하게 WAS 로그 관리하기
넷마블
[여기보기] 적절한 식습관과 운동을 유지하듯 건강하게 WAS 로그 관리하기

WAS의 로그는 적절한 레벨과 포맷으로 관리해야 WAS가 보안을 유지하면서 적절한 저장 공간을 사용해 로그 파일을 생성할 수 있습니다. 또한 로그 디렉터리나 파일을 누구나 열람할 수 없게끔 적절한 권한을 설정해야 합니다. 이번에는 WAS 로그 관리법을 이야기합니다. The post [여기보기] 적절한 식습관과 운동을 유지하듯 건강하게 WAS 로그 관리...

Release PR만들어질때, Jira 이슈에 배포 버전 자동으로 추가하기(feat. GitHub Action)
헤이딜러
Release PR만들어질때, Jira 이슈에 배포 버전 자동으로 추가하기(feat. GitHub Action)

- 회사에서 JIra를 사용하면서 앱 배포버전을 명시하기 위해 fix versions를 활용하고 계신가요?- Release PR이 만들어지면 알아서 해당 작업에 포함된 Jira 이슈들에 fix versions를 추가해줍니다- 더이상 수동으로 jira이슈에 fix versions 추가하지 마세요안녕하세요.헤이딜러 안드로이드팀 박상권입니다.기존 jira ...

사이트 신뢰성에 대한 지표는 어떻게 구성할까? (Feat. SRE)
사람인
사이트 신뢰성에 대한 지표는 어떻게 구성할까? (Feat. SRE)

안녕하세요 사람인 SRE팀 박형규입니다. 통상 많은 기업들이 시스템의 전반적인 지표는 수집하여 관리와 모니터링 그리고 알림을 받거나 하고 있을거예요. 하지만 서비스 레벨에 대한 지표에 대해서는 부족한 면이 많을겁니다. 사람인도 그렇듯 사이트 신뢰성을 위한 서비스 레벨의 지표와 목표 범위를 지정하기 위해 시작하게 되었습니다. 이런 지표를 만들고 보면 단...

Airflow 환경 Docker compose로 containerization하기
네이버 플레이스
Airflow 환경 Docker compose로 containerization하기

안녕하세요, G플레이스데이터개발 팀에 올 하반기 신입으로 합류하게 된 양은석입니다. 비전공자인 저에게는 데이터 엔지니어링(DE)이 생소하고 낯설게 느껴졌는데요, DE의 핵심 도구 중 하나인 Airflow를 이해하게 된 과정과 개발 환경 설정을 통해 팀 생산성에 기여한 경험, 그리고 그 결과를 공유드리고자 이 글을 작성하게 되었습니다.왼쪽부터 기존 로컬...

안전제일! 뱅크샐러드가 모바일 앱을 안정적으로 배포하는 방법
뱅크샐러드
안전제일! 뱅크샐러드가 모바일 앱을 안정적으로 배포하는 방법

지난 글에서는 뱅크샐러드 iOS…

후기 서비스 AWS Opensearch 도입기
마켓컬리
후기 서비스 AWS Opensearch 도입기

위기에서 기회를 만들어 낸 후기 서비스 이야기

업데이트 압축률 67%, 플레이스 리뷰 tagging 시스템 개선경험
네이버 플레이스
업데이트 압축률 67%, 플레이스 리뷰 tagging 시스템 개선경험

안녕하세요, 플레이스 리뷰플랫폼 개발팀 강준우입니다.저희는 네이버 플레이스 서비스인 MY플레이스를 포함해, LINE PLACE, Y!Map 등으로부터 등록된 방문자리뷰를 저장 및 관리하는 플랫폼 팀입니다. 리뷰 각 항목엔 여러 부가정보를 함께 태깅하고 있는데요, 이번에 전체 태깅프로세스를 재설계해 업데이트 부하 67%를 줄이는 등의 개선을 이룰 수 있...

옵저버빌리티를 통한 클라우드 비용 최적화 방안 및 사례
삼성 SDS
옵저버빌리티를 통한 클라우드 비용 최적화 방안 및 사례

세계 경제 전망이 우려되는 상황이 지속됨에 따라 엔지니어링 리더들은 IT 비용을 절감해야 한다는 압박을 점점 더 많이 받고 있습니다. 비용 효율성을 달성하기 위해서는 비용의 절감, 관리 및 최적화 등의 방법을 수행할 수 있습니다. 일반적으로 기업은 지출을 먼저 줄이지만, 이로 인해 생산성과 산출량이 감소할 수 있습니다. 비용을 관리하고 최적화하는 방법...

인터넷 보안 강화를 위한 암호화 트래픽 가시성 확보 - Zscaler의 SSL Inspection
삼성 SDS
인터넷 보안 강화를 위한 암호화 트래픽 가시성 확보 - Zscaler의 SSL Inspection

SSL Inspection이란 말 그대로, SSL 트래픽을 검사하는 것입니다. 암호를 풀어서 판독 가능한 평문으로 만들고 나서 검사하는 것입니다. 그렇다면 어느 수준까지 SSL Inspection을 수행해야 하는 것일까요?

AWS MSK Connect 효과적으로 운영하기
올리브영
AWS MSK Connect 효과적으로 운영하기

안녕하세요. B2B 물류 스쿼드의 백엔드 개발자, 시나브로우입니다. 저희 B2B 물류 스쿼드에서는 올리브영의 오프라인 발주와 물류 시스템을 담당하고 있습니다. 오프라인 개발 환경에서는 모놀리식 기반의 레거시 시스템에서 MSA…

쿠버네티스 멀티 클러스터 구축을 위한 고려사항
삼성 SDS
쿠버네티스 멀티 클러스터 구축을 위한 고려사항

쿠버네티스에서 애플리케이션을 구축하고 운영하는 개발팀, 엔지니어링팀, 운영팀은 손쉽게 클러스터와 네트워크의 가시성, 확장성, 보안을 확보할 수 있는 방법이 필요하다. 표준 마이크로서비스 아키텍처를 관리하기 위한 도구를 찾을 때 즉각적인 관찰 가능성, 즉시 사용 가능한 상황별 알림, 지리적 인식 콘텐츠 딜리버리, 기본 서비스 메시 등의 기능을 제공하는 ...

Kubernetes-native 로그 플랫폼
WATCHA
Kubernetes-native 로그 플랫폼

WATCHA server-platform팀에서 서버를 개발하고 있는 rogi, carl이라고 합니다. 개발한 로그 플랫폼에 대해 공유하고자 합니다.개요WATCHA에는 이미 잘 설계된 로그 플랫폼이 개발되어 사용 중인 바 있습니다. 그러나 시간이 지나면서 개발/비개발 양쪽 모두의 상황이 달라짐에 따라 기존 로그 플랫폼이 설계되었던 당시와는 다른 요구사항...

AWS 가상환경에서의 테스트 자동화 실행기
트렌비
AWS 가상환경에서의 테스트 자동화 실행기

들어가며 안녕하세요. 트렌비에서 QA 업무를 맡고 있는 리타입니다. 트렌비의 QA(Quality Assurance)는 트렌비 서비스의 품질을 보증하기 위해 기획 단계부터 최종 딜리버리까지 개발의 모든 부분에 참여하며 다양한 업무를 수행하고 있습니다. 그 중에서도 테스트가 차지하는 비중이 상당히 클 수 밖에 없는데요. 신규 서비스 런칭을 위해 테스트케이...

사용법과 함께 작성해본 좌충우돌 AWS DMS 사용기 - feat. RDS 통합 이야기
뱅크샐러드
사용법과 함께 작성해본 좌충우돌 AWS DMS 사용기 - feat. RDS 통합 이야기

안녕하세요, 뱅크샐러드 Core Infra 팀의 DevOps Engineer 이재환 입니다. AWS DMS를 사용하면서 겪었던 경험들을 기반으로 기본적인 사용법에 대해 공유해보고자 합니다. RDS…

ML gpu model server 성능을 유지하며 cpu server로 전환한 경험 공유
네이버 플레이스
ML gpu model server 성능을 유지하며 cpu server로 전환한 경험 공유

Intro안녕하세요, G플레이스AI개발팀 박상준, 이주영, 민준호입니다.저희 팀에서는 한국, 일본 등의 지역기반서비스를 사용하시는 유저분들께 새롭고 더 개선된 가치를 제공하기 위해 여러가지 AI 모델을 서비스에 활용하고 있는데요.여기서 그치지 않고 더욱 훌륭한 서비스 경험을 제공하기 위한 large model train, 그리고 더 다양한 모델 활용을...

멀티클라우드의 장점과 고려사항
삼성 SDS
멀티클라우드의 장점과 고려사항

기업이 두 곳 이상의 클라우드 서비스를 활용할 때 멀티클라우드 방식을 사용한다고 합니다. 예를 들어, 생산성 앱으로 마이크로소프트 365, 스토리지 용도로 구글 드라이브, 컴퓨팅 서비스를 위해 AWS를 사용하는 식이다. 물론 스토리지 같은 단일 목적으로 여러 클라우드 서비스업체를 선택하는 경우도 있습니다. 또한 퍼블릭 클라우드 서비스는 매우 저렴하고 ...

GitHub Actions를 활용한 개발 효율화
네이버 플레이스
GitHub Actions를 활용한 개발 효율화

Intro안녕하세요. 스마트플레이스서비스개발 1팀의 오정석입니다.네이버 예약·주문 팀에서는 올해 초부터 본격적으로 GitHub Actions를 활용해 개발 효율화를 꾀하고 있습니다.초기에는 GitHub Actions를 단순히 예약·주문 리포지토리에 PR Lint test 실행을 목적으로 도입되었습니다.이 과정에서 Runner 머신 구축 뿐 아니라 PR...

분석 데이터를 프로덕션에서 쉽게 사용할 수 없을까?
뱅크샐러드
분석 데이터를 프로덕션에서 쉽게 사용할 수 없을까?

이번 글에서는 분석 테이블을 API로 만들 수 있는 데이터서빙 서비스를 만들었던 과정을 소개 드리겠습니다. 뱅크샐러드에서는 S3, Airflow, Spark…

데이터 분석가가 직접 정의, 배포, 관리하는 뱅크샐러드 데이터 파이프라인
뱅크샐러드
데이터 분석가가 직접 정의, 배포, 관리하는 뱅크샐러드 데이터 파이프라인

안녕하세요. 저는 뱅크샐러드 Core Data팀 Tech Lead Manager…

쿠버네티스 보안 자동화, 가능할까요?
삼성 SDS
쿠버네티스 보안 자동화, 가능할까요?

개발팀이 컨테이너와 쿠버네티스를 사용하여 애플리케이션 구축을 자동화하기 위해 서두르고 있는 상황에서 보안 자동화는 매우 중요합니다. 보안팀이 애플리케이션, 인프라 또는 새로운 클라우드의 배포나 업데이트를 중단하거나 지연시킬 수 있는 시대는 지났습니다. 보안 자동화는 컨테이너를 실행을 위한 보안 인프라 및 플랫폼을 구성하는 것부터 시작하여 자동화된 런타...

AWS Lambda Image Resize 도입기
올리브영
AWS Lambda Image Resize 도입기

안녕하세요. 올리브영에서 Back-end…

2023년 국내 클라우드 컴퓨팅 도입 현황 조사 및 전망
삼성 SDS
2023년 국내 클라우드 컴퓨팅 도입 현황 조사 및 전망

클라우드는 더 이상 신기술로 분류하기 어려울 만큼 범용적인 IT 인프라로 자리를 잡았습니다. 하지만 AI/ML이나 데이터 분석처럼 새로운 기술과 서비스가 클라우드를 기반으로 끊임없이 등장하고 있기 때문에 클라우드는 여전히 신기술 흐름의 중심에 있습니다. 모든 새로운 기술과 서비스와 제품에 클라우드와의 연결고리가 있다고 해도 과언이 아닙니다.