현재 저는 9개의 해커톤에 참가했는데 그중 하나가 국제 해커톤이었고 4개에서 우승하기도 했습니다. 그리고 다시, 내 후배인 Dhruv와 Tushar가 Golang 관련 해커톤에 대해 나에게 말했을 때 나는 Harsh를 우리와 함께 끌고갔습니다. 그리고 Harsh뿐만 아니라 우리 팀 Point Blank에서 40명을 끌고 가서 해커톤을 자체 내부 경쟁으로 만들었습니다 ㅎㅎ
우리 팀 GoGoingGone(lmao)은 모두 Golang을 사용한 좋은 경험을 갖고 있었지만, 단지 또 다른 도구를 만드는 것 이상의 일을 하고 싶었습니다. 우리는 혁신을 원했습니다. 바로 그때 아이디어가 떠올랐습니다. 미니 언어를 만들어 동적이고 구성 가능한 데이터 파이프라인을 정의하자는 것입니다.
저는 방갈로르 출신의 공대 3학년이자 오픈 소스 기여자인 Akash Singh입니다.
여기 내 LinkedIn, GitHub 및 Twitter가 있습니다
저는 온라인에서 SkySingh04라는 이름을 사용합니다.
Fractal은 기존 시스템(예: SQL 데이터베이스 및 CSV 파일)에서 MongoDB 또는 AWS S3과 같은 최신 플랫폼으로 원활하게 마이그레이션하기 위한 데이터 처리 도구로 시작되었습니다. 하지만 우리는 단순한 ETL 도구 이상의 것을 원했습니다. 매우 유연하고 사용자 친화적으로 만들어 사용자가 간단한 선언적 구문인 미니 언어로 검증 및 변환 규칙을 정의할 수 있도록 하는 것이 아이디어였습니다. 도구 내에서.
우리는 데이터 파이프라인 공간의 대부분의 도구가 엄격한 구성이나 사용자 정의 스크립트에 의존한다는 것을 관찰했습니다. 이 접근 방식에는 개발자가 아닌 사람의 접근성이 제한되는 상당한 프로그래밍 전문 지식이 필요한 경우가 많습니다. 선언적 미니 언어는 다음을 제공합니다.
이 미니 언어는 바퀴를 재발명하는 것이 아니라 데이터 변환 및 검증을 간소화하기 위한 추상화를 제공하는 것이었습니다.
이를 간단한 yaml 파일 구성과 결합하면 규모에 맞게 한 소스에서 다른 소스로 데이터를 처리할 수 있는 데이터 파이프라인을 쉽게 구성할 수 있다고 생각했습니다.
우리는 두 가지 기본 작업에 중점을 두고 단순하면서도 표현력이 풍부하도록 구문을 설계했습니다.
FIELD("age") TYPE(INT) RANGE(18, 65) FIELD("email") MATCHES(EMAIL_REGEX) FIELD("status") IN ("active", "inactive")
RENAME("old_field", "new_field") MAP("status", {"0": "inactive", "1": "active"}) ADD_FIELD("processed_at", CURRENT_TIME()) IF FIELD("age") > 50 THEN ADD_FIELD("senior_discount", TRUE)
이러한 추상화를 통해 사용자는 최소한의 노력으로 다양한 데이터 세트를 처리하여 생산성을 높이고 복잡성을 줄일 수 있었습니다.
이 언어의 어휘 분석기와 파서를 만드는 방법을 찾는 도중 GoFr.dev 팀은 스트레스 해소 세션을 위해 우리 모두를 위층으로 데려갔습니다. 이 세션은 심야 샤라이와 즉흥 연주 세션으로 가득 차 있었습니다!
해커톤은 단지 미니 언어를 만드는 것만이 아니었습니다. 또한 Fractal이 다음을 보장하도록 주변 인프라를 구축해야 했습니다.
우리는 작업을 4개의 모듈로 나누었습니다.
GO for GOFR 해커톤에서 좋은 성적을 거두었음에도 불구하고 우리는 최종 평가 과정에서 중대한 난관에 직면했습니다. 심사위원들은 녹화된 데모 외에 라이브 시연도 요청했는데, 불행하게도 라이브 실행 중에 파서 로직에 예상치 못한 버그가 발생했습니다. 단 24시간 내에 강력한 사용자 정의 파서를 구축하는 복잡성을 고려할 때 이는 개발에 대한 야심찬 기능이었고, 녹음된 데모에서 그 기능을 선보였지만 시간 제약 하에서 100% 정확도를 달성하는 것은 어려웠습니다. 이 문제로 인해 결국 우리는 최고의 상을 받게 되었습니다. 그러나 우리의 노력은 여전히 높이 평가되었으며, 우리 팀의 명확한 비전과 설득력 있는 전달력으로 우리의 잠재력과 독창성을 부각시키는 "Best Pitch"라는 영예를 얻었습니다.
해커톤은 종종 경계를 넓히고 미지의 영역을 탐험하는 것입니다. Fractal은 액세스 가능하고 모듈식이며 개발자 친화적인 데이터 처리 도구의 작동 방식을 재정의하려는 시도였습니다.
이 일을 위해 저와 함께 일할 생각이 비슷한 사람들, 의심의 여지 없이 최고로 열심히 일하는 팀원들을 이보다 더 바랄 수는 없습니다. 다음 해커톤이 무엇인지 기대하고 있습니다. 감히 RUST 기반 해커톤이라고 말할 수 있을까요? ㅋㅋㅋ
GitHub에서 Fractal을 확인하세요
Fractal은 GoFr 및 Golang으로 구축된 유연하고 구성 가능한 데이터 처리 도구입니다. Fractal은 여러 소스의 데이터 수집을 처리하고, 강력한 변환 및 검증을 적용하고, 다양한 대상에 출력을 제공하도록 설계되었습니다. Fractal을 사용하면 낮은 수준의 세부 정보를 관리할 필요 없이 복잡한 데이터 워크플로를 자동화할 수 있습니다. 프로젝트에서 새로운 통합을 설정하기 위한 문서는 다음과 같습니다.
사용자 정의 구문을 통해 사용자는 다음을 수행할 수 있습니다.
JSON, YAML, CSV, SQL 데이터베이스, 메시지 브로커 또는 클라우드 서비스.
…
피치덱 : 드라이브 링크
직접 시도해 보고 의견을 알려주세요!
위 내용은 Golang Hackathon을 위해 미니 언어를 구축한 이유의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!