4행 Java 코드는 어떻게 생산에서 518772행으로 끝납니까?
3582 단어 codequalitysecurityjava
이번 강연에서 저는 간단한 스프링 안내 프로그램을 만들었고 자바 의존항에 도입된 줄의 수와 제가 작성한 줄의 수를 확정했습니다.이것은 의존 관계가 응용 프로그램에서 매우 큰 공간을 차지하고 있음을 나타낸다. 또한 주의해야 한다.강연이 끝난 후, 나는 아래의 추문을 발표하여 많은 관심을 불러일으켰고, 나에게 이 박문을 기초하도록 격려했다.
Java 종속성에서 가져온 행 수 가져오기
1단계: Spring 부트 응용 프로그램 생성
우선 Spring 부트 응용 프로그램을 만들었습니다. Spring Boot Initialzr 및
web
을 유일한 의존항으로 사용합니다.Spring Initialzr를 사용하여 Java 종속성 추가
이것은 기본적으로 나의 프로젝트가
spring-boot-starter-web
를 유일한 직접 의존항으로 포함하고 있음을 의미한다.단계 2: Rest 디렉터 만들기
다음으로 가장 간단한 REST 4행 끝점을 작성했습니다.
@RestController
public class Controller {
@GetMapping("/hello")
public String hello() { return "hello"; }
}
단계 3: 배포 가능jar 구축
이 자바 프로젝트에서 만든jar 파일은 프로젝트에 의존하는 모든jar를 포함하는 뚱뚱한jar입니다.스프링 부트는 기본적으로 응용 서버와 응용 프로그램 자체를 포함하기 때문이다.
단계 4: 충격기 분석
내가 하는 다음 일은 간단한 응용 프로그램을 구축하고 만든Spring을 사용하여jar를 안내하는 것이다.이것은 jar 파일과 가지고 있는 모든 의존 항목을 압축합니다.JAR의 모든 클래스 파일은 역컴파일되고 코드 줄은 계수됩니다.
단계 5: 결과 수집
작성된 코드 행: 4
항아리
클래스 파일: 9917
코드 행: 518772
숫자에 대한 주석
위에 표시된 숫자는 결코 정확하지 않다.백선과 괄호가 있는 선은 생략되어 최종 계수에 나타나지 않습니다.
만약 우리가 숫자가 더욱 정확하기를 원한다면, 이 줄들을 더욱 잘 분석하고 더 많은 줄을 생략해야 하는지의 여부는 논쟁의 여지가 있다.그 밖에 서로 다른 컴파일러는 서로 다른 결과를 제공할 것이다.
나는 이것이 더욱 위과학 같다고 생각한다.비록 이 숫자들은 정확하지는 않지만, 의존 관계가 우리 응용 프로그램에서 중요한 역할을 하는 것을 확실히 보여 준다.이것은 나의 의도다.
Java 종속성 주의
좋아, 숫자가 매우 크지만, 이 예는 실제로 우리에게 무엇을 알려주었니?우선, Hello World 응용 프로그램에서 Spring Boot을 사용하는 것은 좀 지나치다.그 다음으로 Spring Boot은 하나의 응용 서버이기 때문에 이렇게 많은 수량이 예상됩니다. 맞습니까?
이 말들은 모두 사실이다.동의합니다. 이것은 당신이 쓸 수 있는 가장 쓸모없는 Rest 단점입니다.그러나 이것은 의존항이 우리가 생산에 투입한 2진 파일에서 큰 비례를 차지한다는 사실을 강조한다.스프링 부트는 대량의 자바 개발자들이 사용하는 프레임워크이기 때문에 나는 특별히 이 예에서 그것을 선택했다.
잘 생각해봐.이 예에서, 내가 작성한 코드 줄은 우리가 생산 환경으로 보내는 코드 줄의 총수의 1%에 훨씬 못 미친다.그러나 팀으로서 우리는 이 모든 것에 대해 책임을 져야 한다.응용 프로그램에 문제가 생기면 개발진이 해결해야 한다.코드 심사, 배합 프로그래밍, 자동 정적 분석 등이 있으면 더 좋은 코드 라이브러리를 만드는 데 도움이 될 것이다.그러나 우리가 사용하고 심각하게 의존하는 99퍼센트의 코드는 어떨까.
당신의 의존 관계를 잘 보살피고 제때에 업그레이드하는 것이 매우 중요하다.가방을 가져오면 많은 의존 관계와 가능한 공격 요소를 초래할 수 있다.모든 개발팀은 의존항을 어떻게 선택하고 업데이트하며 삭제하는지를 고려하여 자바 의존항 관리 정책을 만들어야 한다.보안 측면에서 볼 때, 만약 당신의 어떤 의존항이나 전달할 수 있는 의존항에 빈틈이 있다면, 적어도 경고해야 합니다.
Snyk 스캔 프로그램을 사용하여 소스 의존 항목의 빈틈을 탐지하면 이 문제를 해결할 수 있습니다.Snyk는 소프트웨어 개발 수명주기(SDLC)의 모든 단계에 사용할 수 있고 적응성이 강하기 때문에 자동화에 매우 적합하다.Snyk는 빈틈을 탐지할 뿐만 아니라 가능한 한 빨리 빈틈을 탐지하는 데도 도움을 줍니다.
결론
우리의 코드만 잘 챙기는 것은 항상 충분하지 않다. 우리는 우리의 의존 관계에 관심을 가져야 한다. 왜냐하면 그들은 우리의 응용 프로그램에서 커다란 역할을 하기 때문이다.
Snyk 같은 도구를 사용하여 의존항을 스캔하면 의존항의 빈틈이 무시되지 않습니다.그 밖에 신뢰할 수 있는 자바 의존 관계 관리 전략을 실현하는 것은 응용 프로그램의 유지보수성, 확장성, 예측성, 그리고 가장 중요한 안전성을 유지하는 데 매우 중요하다!
Reference
이 문제에 관하여(4행 Java 코드는 어떻게 생산에서 518772행으로 끝납니까?), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/brianverm/how-4-lines-of-java-code-end-up-in-518772-lines-in-production-h7o텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)