Thoughtworks Technology Radar, Volume 29 공개
(thoughtworks.com)테크닉/도구/플랫폼/개발언어 및 프레임워크 분야의 최신 트렌드들을 Hold/Assess/Trial/Adopt 4단계로 시각화 및 설명
AI 지원 소프트웨어 개발
- 코딩을 위한 오픈소스 LLM이 개발 도구 환경을 뒤흔들 것
- 또한 코딩을 넘어서 사용자 스토리 작성 지원, 사용자 리서치, 엘리베이터 피치, 다른 언어 관련 작업등에서 큰 잠재력이 있음
- 동시에 개발자는 이러한 모든 도구를 책임감 있게 사용해야하며, 환각적 종속성 같은 것도 주의해야 함
생산성 측정은 얼마나 생산적일까?
- 소프트웨어 개발은 기술 전문가가 아닌 사람들에게 때로 마술처럼 보일 수 있으며, 이로 인해 관리자는 개발자가 얼마나 생산적으로 수행하는지 측정하려고 노력하게 됨
- 마틴 파울러는 2003년에 "생산성은 측정될수 없다" 라는 글을 썼음
- 아직 SPACE 프레임워크(Satisfaction and well-being, Performance, Activity, Communication and collaboration, Efficiency and flow) 중 Activity에 대한 대체 지표들인 풀리퀘스트 수나 해결한 이슈 건수등은 그닥 좋지 않음
- 대신 업계는 생산성을 측정하기보다는 "흐름에 기여하거나 방해하는 요소를 측정"해야 한다는 "엔지니어링 효율성"에 초점을 맞추기 시작했음
- 개인의 활동에 초점을 맞추는 대신 시스템의 낭비 원인과 경험적으로 보여줄 수 있는 조건이 개발자의 "생산성" 인식에 영향을 미친다는 점에 초점을 맞춰야 함
- DX DevEx 360과 같은 새로운 툴은 특정 결과물 측정이 아닌 개발자 경험에 집중하여 이 문제를 해결함
- 그러나 많은 리더가 여전히 모호하고 정성적인 방식으로 개발자의 '생산성'을 언급하고 있음
- 이러한 관심의 부활 중 적어도 일부는 AI 지원 소프트웨어 개발의 영향에 관한 것으로 생각되며, 이는 "긍정적인 영향을 미치고 있는가?"라는 의문을 제기함
- 생산성에 대한 실제 측정은 여전히 어려움
수 많은 LLM들
- LLM(대형 언어 모델)은 AI의 많은 현대적 혁신의 기초를 형성
- 현재 많은 실험에는 ChatGPT 또는 Bard 같은 채팅과 유사한 사용자 인터페이스를 표시하는 것이 포함
- 광범위하게 LLM은 콘텐츠 생성(텍스트, 이미지 및 비디오)부터 코드 생성, 요약 및 번역에 이르기까지 다양한 문제를 해결할 수 있는 도구
- 강력한 추상화 계층 역할을 하는 "자연어"를 사용하는 이러한 모델은 보편적으로 매력적인 도구 세트를 제공하므로 많은 정보 노동자가 사용중
- 클라우드 호스팅 LLM보다 커스터마이징과 더 강력한 제어가 가능한 셀프 호스팅을 포함하여 다양한 측면의 LLM에 대한 논의가 이루어 짐
- LLM의 복잡성이 증가함에 따라 우리는 특히 에지 장치와 제한된 환경에서 소형 폼 팩터에서 LLM을 양자화하고 실행하는 기능을 고려함
- 질문과 답변 상호 작용을 뛰어넘는 동적 애플리케이션을 구축하는 데 사용할 수 있는 LLM 기반 자율 에이전트 와 함께 성능 향상을 약속하는 "ReAct Prompting" 에 대해 살펴 봄
- 또한 LLM 덕분에 다시 부활하고 있는 여러 벡터 데이터베이스(Pinecone 포함)에 대해서도 언급
- 전문화 기능과 자체 호스팅 기능을 포함한 LLM의 기본 기능은 폭발적인 성장을 이어가고 있음
원격 딜리버리의 해결방법(Workaround)이 성숙해짐
- 원격 소프트웨어 개발 팀은 수년간 지리적 제약을 극복하기 위해 기술을 활용해 왔지만, 팬데믹의 영향으로 이 분야의 혁신이 촉진되어 전체 원격 또는 하이브리드 작업이 지속적인 추세로 굳어짐
- 이번 Radar에서는 원격 소프트웨어 개발 방식과 도구가 어떻게 성숙해졌는지, 그리고 팀이 그 어느 때보다 분산되고 역동적인 환경에서 효과적인 협업에 중점을 두고 경계를 계속 넓혀가는 방법에 대해 논의
- 일부 팀은 새로운 협업 도구를 사용하여 계속해서 혁신적인 솔루션을 제시
- 일부는 실시간 페어 프로그래밍이나 Mob 프로그래밍 , 분산 워크숍(예: 원격 이벤트 스토밍) 과 같은 활동에 대한 기존 대면 관행을 계속해서 조정하고 개선중. 비동기식 및 동기식이 모두 가능
- 원격 근무는 다양한 이점을 제공하지만(보다 다양한 인재 풀 포함), 대면 상호작용의 가치는 분명함
- 팀은 중요한 피드백 루프가 소실되도록 해서는 안 되며 원격 설정으로 전환할 때 발생하는 장단점을 인식해야 함
[Techiniques]
Adopt
- Design systems
- Lightweight approach to RFCs
Trial
- Accessibility-aware component test design
- Attack path analysis
- Automatic merging of dependency update PRs
- Data product thinking for FAIR data
- OIDC for GitHub Actions
- Provision monitors and alerts with Terraform
- ReAct prompting
- Retrieval-Augmented Generation (RAG)
- Risk-based failure modeling
- Semi-structured natural language for LLMs
- Tracking health over debt
- Unit testing for alerting rules
- Zero trust security for CI/CD Assess
- Dependency health checks to counter package hallucinations
- Design system decision records
- GitOps
- LLM-powered autonomous agents
- Platform orchestration
- Self-hosted LLMs
Hold
- Ignoring OWASP Top 10 lists
- Web components for server-siderendered (SSR) web apps
[Platforms]
Adopt
- Colima
Trial
- CloudEvents
- DataOps.live
- Google Cloud Vertex AI
- Immuta
- Lokalise
- Orca
- Trino
- Wiz
Assess
- ActivityPub
- Azure Container Apps
- Azure OpenAI Service
- ChatGLM
- Chroma
- Kraftful
- pgvector
- Pinecone
- wazero
[Tools]
Adopt
Trial
- AWS Control Tower
- Bloc
- cdk-nag
- Checkov
- Chromatic
- Cilium
- Cloud Carbon Footprint
- Container Structure Tests
- Devbox
- DX DevEx 360
- GitHub Copilot
- Insomnia
- IntelliJ HTTP Client plugin
- KEDA
- Kubeconform
- mob
- MobSF
- Mocks Server
- Prisma runtime defense
- Terratest
- Thanos
- Yalc
Assess
- ChatGPT
- Codeium
- GitHub merge queue
- Google Bard
- Google Cloud Workstations
- Gradio
- KWOK
- Llama 2
- Maestro
- Open-source LLMs for coding
- OpenCost
- OpenRewrite
- OrbStack
- Pixie
- Tabnine
[Languages and Frameworks]
Adopt
Trial
- .NET Minimal API
- Ajv
- Armeria
- AWS SAM
- Dart
- fast-check
- Kotlin with Spring
- Mockery
- Netflix DGS
- OpenTelemetry
- Polars
- Pushpin
- Snowpark
Assess
- Baseline Profiles
- GGML
- GPTCache
- Grammatical Inflection API
- htmx
- Kotlin Kover
- LangChain
- LlamaIndex
- promptfoo
- Semantic Kernel
- Spring Modulith