Gradle vs Maven / 인증, 인가

Jung·2021년 11월 9일
0

TIL

목록 보기
47/77
post-thumbnail

좌: gradle (22초), 우: maven (38초)

gif 출처: https://gradle.org/maven-vs-gradle/

Gradle

Gradle은 거의 모든 유형의 소프트웨어를 빌드할 수 있을 만큼 충분히 유연하도록 설계된 오픈 소스 빌드 자동화 도구다. 이 도구는 고성능으로 인해 다양한 종류의 소프트웨어를 만드는 데 널리 사용된다. 프로젝트 구조를 개발하기 위해 Java 및 Groovy 기반 DSL(Domain-Specific Language)에서 작동한다. Gradle은 다양한 플랫폼에서 테스트 및 배포하여 모바일 및 웹 애플리케이션 생성을 지원한다. 기능으로 인해 Android 애플리케이션 개발을 위한 공식 도구로 선호된다.

  • 고도로 사용자 지정 가능 ➡️ 가장 기본적인 방식으로 사용자 지정 가능하고 확장 가능한 방식으로 모델링
  • 빠름 ➡️ 이전 실행의 출력을 재사용하고 변경된 입력만 처리하며 작업을 병렬로 실행하여 작업을 빠르게 완료
  • 강력함 ➡️ Android용 공식 빌드 도구이며 많은 인기 있는 언어와 기술을 지원

Maven

Maven은 자바 빌드 도구로서 Apache Ant를 대안으로 오픈 소스 프로젝트 관리 도구다. 이 도구는 표준화, 즉 짧은 시간 내에 표준 레이아웃의 소프트웨어를 개발하는 것에 중점을 둔다. 이를 통해 Java 프로젝트를 만들 수 있지만 다른 언어에서도 사용할 수 있다. Maven은 응용 프로그램의 구조화를 위해 XML(Extensible Markup Language)을 사용한다.

Maven의 목표

  • 빌드 프로세스를 쉽게 만들기
  • 균일한 빌드 시스템 제공
  • 양질의 프로젝트 정보 제공
  • 더 나은 개발 관행 장려

Gradle vs Maven

GradleMaven
Gradle은 도메인별 언어(DSL) 프로젝트 개발을 기반으로 한다.Maven은 순수 Java 언어 기반 소프트웨어 개발을 기반으로 한다.
프로젝트 구조를 생성하기 위해 Groovy 기반의 DSL(Domain-specific Language)을 사용한다.프로젝트 구조를 생성하기 위해 XML(Extensible Markup Language)을 사용한다.
새로운 기능을 추가하여 애플리케이션을 개발하는 것에 초점을 둔다.주어진 시간 제한에 응용 프로그램을 개발하는 것에 초점을 둔다.
현재 실행 중인 작업만 추적하도록 최적화되어 있으므로 maven보다 성능이 좋다.소프트웨어 생성 중에 로컬 임시 파일을 생성하지 않으므로 많은 시간을 사용한다.
Java 컴파일을 피한다. (Gradle 3.4부터 클래스가 변경되었지만 상수가 변경되지 않은 경우 다시 컴파일할 필요가 없다.)Java 컴파일이 필요하다.
사용자가 익숙해지기까지 많은 시간을 소비해야 하는 새로운 도구다.이 도구는 많은 사용자에게 알려진 도구이며 쉽게 사용할 수 있다.

Gradle - build.gradle

dependencies {
    compileOnly "org.projectlombok:lombok:1.18.22"
    // compileOnly group: 'org.projectlombok', name: 'lombok', version: '1.18.22'
}

Maven - pom.xml

<dependencies>
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.22</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

같은 내용이어도 Gradle이 훨씬 간단한 것을 확인할 수 있다!
https://mvnrepository.com/artifact/org.projectlombok/lombok/1.18.22


Gradle이 많이 발전하고 있지만, 그래도 Maven이 Gradle보다 많이 사용되는 듯하다. (검색량이 사용량이랑 비례한다면)

참고
“Community Home.” Gradle Docs, https://docs.gradle.org/current/userguide/userguide.html.

“Introduction.” Maven, https://maven.apache.org/what-is-maven.html.

“Gradle vs Maven Comparison.” Gradle, https://gradle.org/maven-vs-gradle/.

Champeau, Cédric. “Incremental Compilation, the Java Library Plugin, and Other Performance Features in Gradle 3.4.” The Gradle Blog, Gradle, 25 Feb. 2017, https://blog.gradle.org/incremental-compiler-avoidance.

“Difference between Gradle and Maven.” GeeksforGeeks, 23 Dec. 2020, https://www.geeksforgeeks.org/difference-between-gradle-and-maven/.


기타 용어 정리

인증(Authentication)

인증은 사용자가 누구인지 확인하는 절차다. 인증의 예시로 회원가입, 로그인이 있다.

인가(Authorization)

인가는 사용자에게 해당 리소스에 대한 접근 권한이 있는지 확인하는 절차다.

실제 사례와 비교하면 인증은 공항에서 보안 검색대를 지나갈 때 신분증을 제시해 신원을 "인증"한다. 그런 다음 게이트에 도착하면 승무원에게 탑승권을 제시해 승무원이 탑승을 "인가"(승인)하고 비행기에 탑승할 수 있다.

인증인가
인증은 사용자가 누구인지 확인한다.인가는 사용자에게 해당 리소스에 대한 접근 권한이 있는지 확인한다.
인증은 비밀번호, 일회용 핀, 생체 정보 및 사용자가 제공하거나 입력한 기타 정보를 통해 작동한다.인가는 조직에서 구현하고 유지 관리하는 설정을 통해 작동한다.
인증은 올바른 ID 및 액세스 관리 프로세스의 첫 번째 단계다.인가는 항상 인증 후에 이루어진다.

참고
Auth0. “Authentication vs. Authorization.” Auth0 Docs, https://auth0.com/docs/get-started/authentication-and-authorization.

“What Is the Difference between Authentication and Authorization?” SailPoint, 20 July 2021, https://www.sailpoint.com/identity-library/difference-between-authentication-and-authorization/.

profile
97kim.github.io

0개의 댓글