안녕하세요. 저는 멜론상품개발셀의 Bob(밥)입니다. 작년 신입 공채로 입사하여 어느덧 만 1년이 지났네요. 2019년도 입사할 때부터 지금까지 카카오의 서버 개발자로 1년간 배우고 느꼈던 저의 경험에 대해 이야기해보려 합니다. 입사 전 - 2018년 12월 당시 카카오에서는 신입 공채…
Spring Batch와 Querydsl Spring Batch와 QuerydslItemReader 안녕하세요 우아한형제들 정산시스템팀 이동욱입니다. 올해는 무슨 글을 기술 블로그에 쓸까 고민하다가, 1월초까지 생각했던 것은 팀에 관련된 주제였습니다. 결팀소: 결제시스템팀을 소개합니다와…
트리 쉐이킹 되는 UI 라이브러리 만들기 ㄱ부터 ㅎ까지 웹 페이지를 만들 때 풍부한 기능을 제공하기 위해서 잘 만들어진 UI라이브러리를 사용한다. 필자는 TOAST UI의 라이브러리 중 하나를 개발하고 있고 그동안 쌓은 경험과 노하우를 대방출하고자 한다. 이 글은 UI 라이브러리를 만들…
Gradle 프로젝트에 JaCoCo 설정하기 안녕하세요. 상품시스템팀에서 서버 개발(..새발)을 하고 있는 연철입니다. 프로젝트 세팅 중에 찾아보고 삽질했던 내용들이 도움이 될까 하여 남깁니다. JaCoCo는 Java 코드의 커버리지를 체크하는 라이브러리입니다. 테스트코드를 돌리고 그…
모두를 위한 배달의민족 모두를 위한 앱 개발 스토리 2019년, 배달의민족 앱서비스팀은 ready… set… 마침내… GO! Accessibili—–ty! 했던 한 해였습니다. 서비스 초기부터 접근성 개선을 위해 조금씩 작업했고, 그 노하우가 쌓이고 구성원들의 열정이 더해져 올해는 이전…
지속 가능한 소프트웨어를 위한 코딩 방법 - 세 번째 앞서 이야기한 것들. 앞서 이야기한 것들을 정리해보겠습니다. - DRY 원칙으로 중복 코드를 줄여봅시다. - 중복 코드가 있으면, 비즈니스 로직이 여러 군데 흩어진 것과 같습니다. - 그래서 버그를 수정해도, 여전히 존재하는 같은 버…
지속 가능한 소프트웨어를 위한 코딩 방법 - 마지막 맺음말. 멱등성 (Idempotent) 전산학이나 수학에서 사용하는 용어입니다. 연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질을 의미합니다. 함수 f(x)를 예를 들면 다음과 같은 등식이 성립됩니다. 즉 메서드가 여러 번 실행…
지속 가능한 소프트웨어를 위한 코딩 방법 - 못다한 이야기 가끔 개발자들과 이야기하다 보면, 요즘엔 RDBMS를 저장소로 사용하는 프로젝트는 대부분 JPA를 사용한다고 합니다. 저도 마찬가지고요. 그런데 몇몇 분들은 JPA에 대한 오해를 하고 계시더군요. 그리고 JPA를 잘못 사용하는…
ELK 셋팅부터 알람까지 안녕하세요. 저는 상품시스템팀에서 개발업무를 맡고 있는 이중석입니다. 최근 팀 내에서 로그엔트리를 ELK 로 전환하고 필요한 알람을 셋팅하는 작업을 진행했습니다. 이 과정중 알람을 설정하는 부분이 어렵진 않지만 쉽지도 않았습니다. 그 과정에서 알게된 것들이 다른…
데브시스터즈는 Kubernetes 기반의 게임 개발 및 테스트 인프라를 성공적으로 구축하여 게임 출시에 이르는 모든 과정들을 효율적으로 처리하고 있습니다. 다년간의 성공적인 운영 경험을 바탕으로 Windows Server 기반의 Workload를 지원하기 위한 R&D 작업을 진행하였고,…
지속 가능한 소프트웨어를 위한 코딩 방법 - 첫 번째 서론 소프트웨어 시스템의 모든 함수 및 메서드는 어떤 일을 합니다. 8비트 페미콤 시절에는(너무 아재스럽나요?) 함수 하나로 화면에 * 를 출력하는 소프트 웨어를 만들었습니다. 하지만 지금은 롤 플레임 게임이나 상품 추천과 같은 복잡…
Object Mapping 어디까지 해봤니? 머리말 TOAST Notification에서는 API 버전 별 객체와, 비즈니스 로직, 레이어 간 객체와 객체 간 매핑(Mapping) 시 MapStruct를 사용하고 있습니다. 이 글에서는 Object Mapping 라이브러리인 MapStr…
Cucumber + Appium을 통해 Android 앱 테스트 안녕하세요! Android 앱이 UI 자동화 테스트되는 과정의 일부에 대한 동영상입니다 🙂 저는 앱서비스팀에서 Android/iOS의 배달의민족 앱 QA를 담당하고 있는 최윤주입니다. 배달의 민족 앱은 2주 단위로 정기 업…
feign 좀더 나아가기 안녕하세요. 저는 상품시스템팀에서 개발하고 있는 고정섭입니다. 이 글에서는 배달의민족 광고시스템 백엔드에서 feign 을 적용하면서 겪었던 것들에 대해서 공유 하고자 합니다. 이 글은 이전에 작성된 게시글에서 추가 보완사항에 대해서 작성되었습니다. http cl…
메인 데이터베이스 IDC 탈출 성공기 안녕하세요. 우아한형제들 시스템신뢰성개발팀 박주희입니다. 2019년을 마무리하는 시점에 우아한형제들이 어떻게 메인 데이터베이스를 IDC 환경에서 탈출시켰는지, 그 과정을 공유하려고 합니다. 발단 2010년 6월 출범한 배달의민족은 (2018년 12월…
Github PR을 올리면 자동으로 테스트가? 심지어 멀티 프로젝트에도 가능하다! 안녕하세요. 메세징플랫폼개발팀의 한병익 사원입니다. 저희 팀을 비롯하여 많은 분들이 사내에서 Jenkins를 CI/CD 도구로 사용하고 있습니다. 저희는 그중에서도 GitHub Pull Request Bu…
Spock Extension과 Elasticsearch + Kibana 조합으로 테스트 결과를 빠르게 피드백 받기 안녕하세요. 우아한형제들 주문마케팅회원서비스팀 장진우입니다. 모든 테스트는 중요하고 가치가 높은 활동입니다. 특히 개발을 지원하기 위한 기술 중심의 테스트가 조금 더 중요하…
DBA와 개발자가 모두 행복해지는 Hibernate의 in_clause_parameter_padding 옵션 Java ORM 기술의 표준 명세인 JPA가 소개된 지 참 오래되었지만, 국내 현실상 대규모 시스템에서 적용되어 사용된 운영 경험이 충분히 쌓이지 않고 공유되지도 않는 것 같습니…
반응형 시스템 개선하기(feat. TOAST UI Grid) TOAST UI Grid는 자체적인 반응형 시스템을 구축하여 데이터의 상태 관리를 하고 있다. 데이터가 변경되면 반응형 시스템이 변경을 감지하고 있는 다른 데이터 속성들도 자동으로 갱신해주기 때문에 데이터의 변경 관리를 편리하…
뱅크샐러드의 서버 엔지니어 1명과 데이터 엔지니어 1명이 한국시간으로 2019년 11월 29일 금요일부터 2019년 12월 7일 토요일까지 미국 라스베가스에서 열린 AWS re:Invent 2019 행사에 출장을 다녀왔습니다. 행사 티켓과 항공편, 숙박은 AWS 글로벌 파트너사인 베스핀…
이 회사, 이 세상 쿨함이 아니다 안녕하세요. 우아한형제들에서 ‘우아한테크코스(이하, 우테코)’ 교육을 진행하고 있는 교육코스개발팀입니다. 이달 말, 우테코 1기 교육생들이 8개월간의 대장정을 마치고 드디어 수료를 합니다. 짝짝짝! ‘시원섭섭하다’는 감정이 어떤 감정인지 다시 한번 느끼…
NAVER Tech Talk: Android 밋업(2018년 11월, 2019년 10월) - 등록일 - 2019.12.03 - | - 코멘트 - 5551 NAVER에서는 다양한 기술에 대한 테크톡을 주기적으로 진행하고 있는데요. 2018년 11월과 2019년 11월에 진행한 사내 And…
바닥부터 시작하는 Vue 테스트와 리팩토링 from if kakao 들어가며 안녕하세요. 카카오 FE플랫폼팀 Lumi입니다. 얼마 전 열렸던 kakao FE(Front end) meetup 행사에서 '바닥부터 시작하는 Vue 테스트와 리팩토링’이라는 주제로 발표를 맡았고, 그때 발표했던…
카카오커머스를 지탱하는 Angular from if kakao 카카오커머스의 FE개발파트는 React나 순수 JS로 개발되어있던 선물하기, 쇼핑하기 등 각 서비스 프레임웍을 모두 Angular로 전환하고 있습니다. 이 글에서는 이 결정을 하게 된 배경과 Angular가 어떤 프레임웍이고…
프렌즈타임 웹앱 삽질기 from if kakao 안녕하세요, 카카오게임즈에서 프렌즈타임 클라이언트를 개발하고 있는 mark입니다. 지난 11월 13일 진행된 kakao FE meetup에서 ‘프렌즈타임 웹앱 삽질기’ 라는 주제로 발표한 내용을 옮긴 글입니다. 주니어 개발자로 팀에 합류하…
이 글은 <카카오 나우>의 콘텐츠를 인용했습니다. ‘세상을 조금 더 좋아지게 만드는 사람들’ 기술 발전 속도가 거세짐에 따라 더 많은 개발자들이 보다 나은 내일을 만드는데 기여하고 있습니다. 수천만 명이 사용하는 카카오 서비스들의 이면에도 여러 개발자들이 한 땀 한 땀 엮어놓은 알고리듬…
브라우저 싸움에 등 터지는 개발자들을 위한 HTTP쿠키와 톰캣 쿠키 프로세서 이야기 무심코 프로젝트의 라이브러리를 버전 업하다가 예상치 못한 에러가 발생한 경험이 다들 있을 것입니다. 주로 이런 에러는 성가신 호환성 문제이거나 버전 별 버그가 원인이지만, 가끔은 버전과 세월을 따라 발전…
당신의 자바스크립트 API 문서는 안녕하신가요? 이 글을 읽고 있을 개발자라면 적어도 한 번쯤 API 문서를 작성해 본 경험이 있으리라 생각한다. "오전까지 100개 함수에 대한 API 문서를 만들어주세요."라는 업무가 주어졌다고 가정해보자. 이때 어떤 그림이 그려지는가? 워드 또는 엑…
웹 프론트엔드 기술은 빠르게 발전하는 것만큼이나 유행에 민감합니다. jQuery로 대표되는 초기 프론트엔드 라이브러리를 시작으로 다수의 프레임워크(또는 라이브러리, 이후 프레임워크로 통칭)들이 나타나고 사라지기를 반복해 왔습니다. 때로 이들은 개발자들에게 새로운 패러다임, 디자인 방식,…
스프링부트에서 DbUnit 을 이용하여 DB 테스트해 보기 안녕하세요. 상품시스템팀 권순규입니다. 저희 팀에서 DB 테스트를 위해 사용하고 있는 DbUnit 의 설정 및 사용에 대해 알려드리고자 합니다. DbUnit 을 사용하지 않고 스프링부트만을 이용하여 테스트하기 아래와 같은 관계를…
2019년과 이후 JavaScript의 동향 – 브라우저 밖의 JavaScript 2 - 등록일 - 2019.10.28 - | - 코멘트 - 27984 브라우저 밖의 JavaScript 생태계를 다루는 "2019년과 이후 JavaScript의 동향" 시리즈의 마지막 글에서는 JavaSc…
2019년과 이후 JavaScript의 동향 – 브라우저 밖의 JavaScript 1 - 등록일 - 2019.10.28 - | - 코멘트 - 29904 이제 JavaScript는 프런트엔드에서만 작동하는 언어라고 말할 수 없습니다. 브라우저 영역에만 국한되지 않는 다양한 시도가 Java…
2019년 10월, 영국 컨설팅업체 헨리앤드파트너스가 발표한 여권지수(Henley Passport Index)에 따르면 한국의 비자면제 방문국 수는 188개국으로 독일, 핀란드와 함께 공동 2위에 올랐습니다. 이는 우리나라의 위상이 그만큼 높아졌다는 것을 뜻할 뿐 아니라, 여권이라는 세…
올해 오프라인으로 진행된 2차 코딩 테스트 문제는 가상의 SNS 카카오팔로잉을 위한 팔로잉 추천 시스템을 구현하는 것이었습니다. 카카오팔로잉 카카오팔로잉은 팔로우 기반의 구독형 SNS로, 팔로잉(팔로우 중인 상대 사용자)의 글과 사진을 볼 수 있는 서비스입니다. 이 서비스는 다음과 같이…
웹 프론트엔드 프레임워크 개요 과거와 달리 최근에는 자바스트립트 진영에서도 프레임워크를 이용한 개발이 필수로 여겨지고 있습니다. 2017년까지만 해도 개발자들은 프로젝트에 Angular와 React 중 어느 것을 사용해야 하는지 여부를 주로 토론했으나, 2018년 이후 Vue.js라는…
[K8S] kubernetes POC를 위한 portainer, rancher 소개 및 설치 등록일 2019.10.16 조회수 12107 들어가는 말 - docker와 kubernetes(이하 k8s)를 간단하게 활용해 보기 위한 portainer와 rancher를 소개합니다. 대상 -…
‘우아한테크코스 – 웹 백엔드’ 2기 과정에 참여할 사람을 모집합니다. ‘우아한테크코스 – 웹 백엔드’ 2기를 모집합니다. 아무 것도 없는 상태에서 우아한테크코스 1기 모집 글을 쓸 때가 어제 일 같은데 벌써 2기 모집 글을 쓰네요. 1기 모집 글을 쓸 때는 막막함과 약간의 두려움이 있…
2018년 7월, 서버리스(Serverless) 아키텍처의 오류 감지 및 모니터링 솔루션 업체인 대시버드(Dashbird)의 SEO 매니저 존 데미안(John Demian)은 자사 홈페이지에 흥미로운 글을 게시했습니다. 코카콜라가 아마존 웹 서비스(Amazon Web Service, 이…
WEB Firewall 서비스 소개 (TOAST Service 들여다 보기) WEB Firewall은 웹 공격을 전문적으로 탐지/방어하는 보안 설루션으로, 고객의 웹서비스로 공격이 인입될 경우, 전용 설루션을 통해 탐지/방어함으로써 즉각적인 대응이 가능하도록 지원하는 서비스입니다. TO…
좌충우돌 Terraform 입문기 안녕하세요, 저는 신사업부문의 오지산이라고 합니다. 저희 신사업부문은 배달의민족과는 조금 다른… 시장의 문제를 해결하기 위해 다양한 신규 서비스들이 개발되는 곳입니다. 그 중에는 아직 출시되지 않은 서비스도 있고, 배달의민족과 비교적 관련성이 적은 서비…
NAVER Tech Talk: Android 밋업(2019년 7월) - 등록일 - 2019.09.20 - | - 코멘트 - 5620 NAVER에서는 다양한 기술에 대한 테크톡을 주기적으로 진행하고 있는데요. 2019년 7월에 진행한 사내 Android 밋업 중 발표자의 공개 동의를 얻은…
개발자 머피의 법칙 안녕하세요, 우아한형제들 광고시스템팀의 손권남입니다. 이 글은 기술적인 내용도 아니고 우아한형제들 회사에 관한 이야기도 아닌, 순전히 저의 개인적인 경험을 다룹니다. 매우 긴 글이므로, 맨 앞과 맨 뒤, 그리고 제목 정도만 읽어도 대략의 핵심 주제는 파악 가능합니다.…
Zombie 프로세스를 좀처럼 볼 수 없는 이유? 새로운 프로세스를 만들 때 리눅스에서는 fork() 를 사용합니다.fork() 를 통해서 부모 프로세스는 자식 프로세스를 생성하고, 자식 프로세스에서 실제 실행하려는 프로그램을 exec() 을 통해서 실행합니다. 자식 프로세스가 exit…
대상 서버의 포트가 열려 있는지 확인하는 3가지 방법 ACL이나 보안 그룹(security group)으로 포트가 막혀 있는지 확인하고 싶을 때가 많습니다. 보통은 ping 같은 명령어로 ICMP 패킷을 쏴보고 해당 서버가 살아있는지 먼저 확인합니다. 그러나 ping으로는 살아 있는데,…
메일 시스템 구조개선을 진행하면서 kafka를 사용하며 부딪혔던 문제와 해결했던 방법을 공유하여 같은 문제를 겪을 수 있는 분들에게 도움이 되고자 작성하게 되었습니다. 최근 시스템솔루션개발파트에서는 MSA구조로 개선하는 프로젝트를 진행하고 있습니다. 이에 일환으로 메일 시스템의 구조개선…
병아리 개발자의 걸음마 한 발짝 (feat. 파일럿 프로젝트) 지원서에서 발췌한 내용 … 나름대로 제일 좋은 방법이라고 생각했던 해결책이 경험 많은 개발자분들이 보시기에는 어떤지, 시니어 개발자분들은 문제가 생겼을 때 어떻게 접근하고 어떻게 해결하는지 등도 항상 궁금해 왔습니다. … 파…
API Gateway 소개 (TOAST Service 들여다 보기) API Gateway 란? 최근 서비스는 마이크로서비스 아키텍처 형태로 독립적인 기능을 수행하는 작은 단위의 서비스로 나누어 개발하고 있습니다. 작은 단위의 서비스로 분리함에 따라 서비스의 복잡도를 줄일 수 있으며, 변…
CloudTrail 소개 (TOAST Service 들여다 보기) TOAST CloudTrail Cloud 를 사용하는 고객들은 자신의 조직, 프로젝트에서 일어나는 일들에 대해서 이력을 확인하여 운영 감사, 위험 감사를 진행할 필요가 있을 수 있습니다. TOAST CloudTrail은…
글로벌 네트워크 에뮬레이터 prism_pacman 소개 - 등록일 - 2019.08.28 - | - 코멘트 - 15250 해외 서비스에서 현지 네트워크 상황을 고려하여 최적화된 서비스를 제작하고 튜닝하는 일은 쉽지 않습니다. 전송 속도가 낮아서 서비스 전체적인 응답 속도가 떨어져 답답하…
지난 8월에 런칭한 대량 메일 컨텐츠 생성 시스템 개발을 진행하며, 경험했던 것들을 공유하고자 이 포스트를 작성합니다. 먼저, 이번에 개발된 시스템은 이전에 포스팅된 분산처리 시스템 구조개선 프로젝트와 동일한 아키텍쳐를 바탕으로 개발되어 있습니다. 구조가 궁금하시다면 이전 포스트를 참고…
뱅크샐러드가 작년에 다이아몬드 후원사로 참여한 데 이어 올해 [파이콘 한국 2019]에도 키스톤 후원사로 참여했습니다. 이번 글을 통해 파이콘에 참여한 뱅크샐러드의 이모저모를 돌아보려 합니다. 뱅크샐러드의 엔지니어 네 분이 이번 파이콘에 발표자로 참여했습니다. 이외에도 후술할 Pytho…
이어서 앞선 글에서 Java의 메모리 구조와 OOME가 발생하는 케이스에 대해 알아보았다면, 이번 글에서는 OOME를 예측할 수 있는 모니터링 방법과, OOME가 발생했을 때 덤프를 통해 원인분석을 하는 방법에 대해서 알아보고자 한다. 보통 서버를 관리하는 사용자들은 CLI 환경에서 작…
데이터테크랩의 빨리 세는 법 데이터테크랩의 나기호 선임님과 함께 진행하고 있는 과제를 소개해 드리는 글 입니다. 오늘은 부서에서 개발 중인 플랫폼 중 많은 데이터의 숫자를 빨리 세기 위해, 혹은 빨리 찾기 위해 만들고 있는 DataMart를 소개해 드리겠습니다. 빨리 집계하기 위해 가장…
회사 눈치 안 보고 투잡하기 소개 안녕하세요 우아한형제들에서 백엔드 개발자로 일하고 있는 강현구입니다.🙇 저는 개발 외에도 다른 일을 하고 있는데요, 바로 우아한테크코스(이하 우테코)에서 코드 리뷰어로 활동하고 있습니다. 코드 리뷰어는 우테코에 참여중인 크루(우테코는 교육생을 학생이 아…
TOAST CDN 소개(TOAST Service 들여다 보기) CDN (Content Delivery Network) 이란? CDN (Content Delivery Network)은 콘텐츠(이미지, 텍스트, 미디어 파일 등)를 최적화된 경로를 통해 전송할 수 있도록 전 세계적으로 분산된…
실전! Python 실행 환경 설정하기 배경 이 글은 Linux 환경에서 Python으로 안정적인 서비스 애플리케이션을 제공하기 위해 사용할 환경을 마련하는 방안에 대해서 다룹니다. Python 런타임은 각 OS에서 사용되는 패키지 관리자나 인스톨러를 이용하여 잘 설치되어 있다고 가정하…
2019년과 이후 JavaScript의 동향 - 라이브러리와 프레임워크 2 - 등록일 - 2019.08.09 - | - 코멘트 - 39504 웹 컴포넌트(Web Component)가 프런트엔드 영역의 개발을 컴포넌트 기반 개발로 전환할 수 있을 것이리라 기대했지만 오랜 시간 동안 웹 컴…
데이터 품질에 관한 5개 체크포인트 - 등록일 - 2019.08.06 - | - 코멘트 - 18072 '코드 품질'은 소프트웨어 개발자에게 직업적 사명의 문제인지라, 이것의 중요성에 대해서는 따로 강조할 필요가 없습니다. '데이터 품질'이란 말은 이에 비하면 다소 모호하고 생소한 개념입…
결팀소: 결제시스템팀을 소개합니다. 소개 우아한형제들 결제시스템팀에서 근무하고 있는 이주현이라고 합니다. 제가 입사하고 이 팀에서 일한 지 3년이 넘었습니다. 지금은 회사, 사람, 팀, 인프라, 코드, 문화 등 다양한 변화에 적응하고 있는 구성원이지만 한 때 우아한형제들은 너무나 가고…
2019년과 이후 JavaScript의 동향 - 라이브러리와 프레임워크 1 - 등록일 - 2019.08.02 - | - 코멘트 - 60045 어느 순간부터 프레임워크의 홍수 속에 있는 듯합니다. 각 프레임워크가 내세우는 철학과 다양한 장점에 촉각을 세우고, 어떤 것을 선택해야 할지 그리…
GraphQL은 페이스북에서 만든 쿼리 언어입니다. GrpahQL은 요즘 개발자들 사이에서 자주 입에 오르내리고 있으나, 2019년 7월 기준으로 얼리스테이지(early-stage)임은 분명합니다. 국내에서 GraphQL API를 Open API로 공개한 곳은 드뭅니다. 또한, 해외의…
Docker 기반 분산 트랜스코더 개발 - 등록일 - 2019.08.01 - | - 코멘트 - 20894 VOD(video on demand, 주문형 비디오) 서비스는 다양한 사용자 환경에서 일관된 품질로 영상이 재생될 수 있도록 콘텐츠를 준비해야 합니다. 서비스에 업로드된 원본 영상은…
Dagger 적용기 Dagger 적용기 최근 적용한 dagger에 대해서 이야기합니다 시작하며 DI 좋은건 다들 알지만 하나하나 만들어가자면 손이 너무 많이가는 것도 사실입니다. 그래서 많은 안드로이드 프로젝트에서 Dagger 또는 코틀린을 적용한 프로젝트라면 koin 등을 사용하고 있…
TOAST FORWARD - Spring Framework Core 후기 NHN에서 'TOAST FORWARD'라는 이름으로 우수한 내부의 기술교육 콘텐츠를 외부에 공개하고 있다는 것, 알고 계셨나요? 지난 7월 11일에 진행한 '하루에 정리하는 Spring Framework Core'…
- blog - support 참여 후기: Open Infrastructure & Cloud Native Days Korea 2019 지난 주 18일부터 19일까지 양일간 진행된 Open Infrastructure & Cloud Native Days Korea 2019 행사에 카카오가…
LocalStack을 활용한 Integration Test 환경 만들기 안녕하세요. 주문마케팅서비스팀 송정훈입니다. 이 글에서는 AWS 서비스를 활용하는 웹 어플리케이션이 클라우드 환경이 아닌, 로컬개발환경에서 쉽게 실행하고 테스트할 수 있는 방법에 대해서 설명하고자 합니다. 우리의 I…
멀티모듈 설계 이야기 with Spring, Gradle 멀티 모듈 설계 이야기 안녕하세요. 배달의민족 프론트 서버를 개발하고 있는 권용근입니다. 멀티 모듈의 개념을 처음알게 되었을 때부터 현재까지 겪었던 문제점들과 그것을 어떻게 해결해나갔는지를 이야기해보려고 합니다. 아래 내용은 모두…
우아한테크코스 : 항해의 시작 안녕하세요. 교육코스개발팀 이원미입니다. 많은 분들이 알고 계시다시피, 우아한형제들에서는 개발자 양성 교육 ‘우아한테크코스(이하, 우테코)‘ 를 진행하고 있습니다. 빠르게 흘러가는 시간 덕인지, 우테코를 시작한 지 어느덧 두 달이 되어 가네요 : ) 총 4…
NAVER 오픈소스 세미나 - Performance does matter - 등록일 - 2019.06.28 - | - 코멘트 - 18499 다양한 컴포넌트의 조합으로 구성된 서비스를 운영하다보면 장애나 성능 문제가 발생했을 때 정확한 원인을 파악하는데 시간이 오래 걸린다는 또다른 난제에…
Dll을 이용하여 배달대행 주문정보 연동 우아한형제들에도 Windows 개발자가 있습니다. 저는 주문중계시스템팀에서 PC 어플리케이션을 개발하고 있습니다. 대부분 우아한형제들에서 PC 어플리케이션을 개발한다는 것 자체를 모르시는 분이 많겠지만 우아한형제들에는 Windows Applica…
Kotlin 도입 과정에서 만난 문제와 해결 방법 - 등록일 - 2019.06.26 - | - 코멘트 - 43671 "Google I/O 2017 참관기 - Kotlin"에서 소개한 것처럼 Kotlin은 JVM은 물론 Android, JavaScript, 네이티브 영역 등 다양한 플랫폼…
2019년과 이후 JavaScript의 동향 - WebAssembly - 등록일 - 2019.06.24 - | - 코멘트 - 32354 WebAssembly는 C와 C++ 같은 프로그래밍 언어를 컴파일해 어느 브라우저에서나 빠르게 실행되는 바이너리 형식(low-level language…
가상화(virtualization)? 비즈니스에 필요한 머신들은 항상 하나의 세팅, 하나의 목적에 따라 운영되어 왔습니다. 서로 다른 환경이 필요하면 두 대의 머신을 사용할 수밖에 없었습니다. 하지만 각 머신의 물리적 자원이 충분히 활용되기를 원하고 투자 비용을 줄이기 위한 방편으로 가…
더 가볍고 강력해진 TOAST UI Grid v4.0을 만나보세요! TOAST UI Grid 4.0 TOAST UI Grid는 여러분의 데이터를 효과적으로 표현하고, 편리한 사용성을 제공하기 위해 많은 노력을 해왔습니다. TOAST UI Grid 4.0은 더 빠르고, 가벼우면서 사용하기…
Apollo Client는 Redux와 무엇이 다른가 - 등록일 - 2019.06.17 - | - 코멘트 - 35858 최근 들어 REST API의 단점을 보완하고 더 개선된 사용 환경을 제공하기 위해 네이버의 다양한 서비스에서 GraphQL을 기반으로 한 Apollo Client를 도…
1 데이터 품질관리 이슈 업무 자동화를 위한 애플리케이션 세분화, 모바일 디바이스와 정보시스템 간 연계 등으로 기업이 관리하는 데이터 볼륨은 매년 급속도로 증가하고 있으며, 데이터의 소스나 형태도 신기술을 반영하여 다양해지고 있습니다. 이에 따라 기업의 데이터 관리정책도 변화를 거듭하고…
Spring Boot에서 Repository로 DynamoDB 조작하기 (2) – Gradle을 활용해 실행 & 테스팅 환경 구축 이전 글에서 DynamoDB를 조작할 수 있는 다양한 API를 알아봤습니다. 애플리케이션을 실행하거나 테스트하기 위해 docker로 DynamoDB를 띄우는…
2019년과 이후 JavaScript의 동향 - JavaScript(ECMAScript) - 등록일 - 2019.06.12 - | - 코멘트 - 34323 JavaScript의 인기는 이제는 굳이 언급할 필요가 없어 보일 만큼 계속되고 있습니다. GitHub의 보고서인 Octoverse…
0.7KB로 Vue와 같은 반응형 시스템 만들기 TOAST UI Grid는 현재 새로운 메이저 업데이트인 버전 4를 릴리스하기 위해 열심히 준비중이다. 버전 4는 Backbone과 jQuery를 사용해서 작성했던 기존의 코드를 모두 버리고 처음부터 새로 작성하는 대대적인 개편 작업이다.…
데브시스터즈는 Kubernetes 기반의 게임 개발 및 테스트 인프라를 성공적으로 구축하여 게임 출시에 이르는 모든 과정들을 효율적으로 처리하고 있습니다. 다년간의 성공적인 운영 경험을 바탕으로 Windows Server 기반의 Workload를 지원하기 위한 R&D 작업을 진행하였고,…
Spring Boot에서 Repository로 DynamoDB 조작하기 (1) – 설정부터 실행까지 안녕하세요, 미래사업부문 김명재입니다. 작년 10월에 우아한형제들에 입사하고 행복한 주니어 개발자 생활을 하고 있습니다. 현재 개발중인 시스템의 NoSQL DB를 MongoDB에서 Dyn…
[Kotlin | Android] 테스트 코드 작성이 힘든 이유와 테스트 가능 코드에 대한 고민 안녕하세요. 요새 저는 테스트 코드 작성에 혈안 집중을 하고 있는데요, 많은 분들이 '테스트 코드' 작성이 힘들다고 생각하시며, 과연 그게 '필요한가' 하는 고민까지 하는 것을 보았습니다.…
데브시스터즈는 Kubernetes 기반의 게임 개발 및 테스트 인프라를 성공적으로 구축하여 게임 출시에 이르는 모든 과정들을 효율적으로 처리하고 있습니다. 다년간의 성공적인 운영 경험을 바탕으로 Windows Server 기반의 Workload를 지원하기 위한 R&D 작업을 진행하였고,…
입사 후, 벌써 1년 작은 SI 회사 개발자에서 우아한형제들로 이직 1년 안녕하세요. 배민플랫폼실 결제정산개발팀에서 정산 업무를 맡고 있는 이호진입니다. 이 글은 SI 회사에서 우아한형제들로 이직한 후 1년간 있었던 변화에 대한 이야기입니다. 5월 14일, 입사 1년이 되는 날을 맞아…
MySQL을 이용한 분산락으로 여러 서버에 걸친 동시성 관리 안녕하세요. 비즈인프라개발팀 권순규입니다. 현재 광고시스템에서 사용하고 있는 MySQL을 이용한 분산락에 대해 설명드리고자 합니다. 분산락을 적용하게된 원인 현재 테이블은 아래 그림과 같이 User 테이블과 Card 테이블이…
우아한 feign 적용기 안녕하세요. 저는 비즈인프라개발팀에서 개발하고 있는 고정섭입니다. 이 글에서는 배달의민족 광고시스템 백엔드에서 feign 을 적용하면서 겪었던 것들에 대해서 공유 하고자 합니다. 소개 - Feign 은 Netflix 에서 개발된 Http client binder…
#안전하고 안심할 수 있는 게임을 만들고 싶어 게임은 소프트웨어 프로그램 중에서도 특히나 여러가지 요소가 유기적으로 작용하는 아주 복잡한 콘텐츠다. 그만큼 엮어진 부분들이 많기 때문에 버그도 많이 발생하는 편이다. 슬프게도 테스트를 통해 찾는 버그도 매우 많지만 그만큼 찾지 못하는 버그…
도움이 될수도 있는 JVM memory leak 이야기 도움이 될지도 모르는 JVM memory leak 얘기인데 제목을 뭐라고 하지? 안녕하세요. 배민 플랫폼실 주문중계 시스템팀 오민철입니다. 이 글은 몇 줄의 코드와 어디서 걸렸는지 모를 dependency library로 발생한 m…
Telepresence로 Kubernetes 클러스터에서 실행할 애플리케이션을 로컬 환경에서 개발하기 - 등록일 - 2019.05.24 - | - 코멘트 - 18962 Kubernetes 클러스터에서 실행할 서비스를 개발할 때에는 특정한 기능을 수행하는 작은 단위의 애플리케이션들로 하나…
RPA POC 개발 경험과 자료 공유 저희팀에서 RPA POC를 진행하며, 조사했던 자료와 경험했던 것들을 공유하고자합니다. 들어가기에 앞서 RPA 는 다음과 같이 정의 할 수 있습니다. - 비즈니스 프로세스를 사람이 아닌 S/W 로봇이 수행하도록 자동화 하는 것 - 프로세스 처리를 위…
타입 스크립트에서 Vue 컴포넌트를 개발하는 방법 여기까지 오기까지 내가 처음 SPA 프로젝트를 진행했던 때는 2012년이다. 그때 제일 핫했던 백본(Backbone)을 기반으로 구축한 꽤 큰 규모의 프로젝트였다. 그때는 지금처럼 프런트엔드 개발환경이 좋지 않았고 SPA라는 개념 자체가…
현재 크로키는 API를 GraphQL로 만들고 있습니다. 아직 많은 부분에 대해서 연구 중이어서 현재 상황만 간단하게 정리해 보겠습니다. Thrift를 1년 정도 쓴 시점부터 여러 가지 불편함을 느끼고 대안을 찾다가 GraphQL을 선택했습니다. GraphQL 생태계가 Node.js를…
5월 우아한 Tech 세미나 후기 안녕하세요. 교육코스개발팀 이동규입니다. 저희 팀은 5월 7일부터 우아한테크코스 교육을 진행하고 있습니다. 교육과 관련하여서는 이전의 포스팅에서 모집글과, 프리코스관련 글을 확인하실 수 있습니다. 현재 우아한형제들은 다양한 DR (Developer Re…
이전 글로 딥러닝 기반 개인화 추천 시스템의 모델에 대한 부분을 소개 했었어요. 이번에는 당근마켓에서 추천 시스템을 지속적으로 업데이트하는 파이프라인과 서빙 시스템을 구축한 내용을 소개하려고 합니다. Kubeflow Pipelines Kubeflow Pipelines은 Kubernete…